本手冊(cè)是用友NC開發(fā)過程中SQL使用的經(jīng)驗(yàn)總結(jié)和強(qiáng)制規(guī)范,希望對(duì)大家的SQL語(yǔ)句的書寫和數(shù)據(jù)庫(kù)的開發(fā)能夠給與一定的借鑒。
一、概述
本手冊(cè)側(cè)重于
SQL
開發(fā)書寫過程中的規(guī)范問題。盡可能的在總結(jié)以往開發(fā)過程中形成的
SQL
開發(fā)方法,并針對(duì)在軟件維護(hù)、
SQL
語(yǔ)句跨多數(shù)據(jù)庫(kù)、操作系統(tǒng)適配中出現(xiàn)問題的解決辦法的基礎(chǔ)上,提出的一個(gè)
SQL
開發(fā)規(guī)范。
二、書寫風(fēng)格
1.
SQL
語(yǔ)句全部使用小寫,除在
SQL
中用引號(hào)括起來的常量外,請(qǐng)使用單字節(jié)。
2.?
引用字符時(shí)用單引號(hào)。如:
update testable set idcol=’abcd’
。
3.?
盡量使用
prepareStatement
,利用預(yù)處理功能。少用
createStatement
。
4.?在
拼裝
SQL
的時(shí)候,使用
StringBuffer,
不要用
String+String
的方式。
5.?
嚴(yán)禁使用
select * …….
形式的語(yǔ)句,要指出
select
的具體字段。
6.?
嚴(yán)禁使用
insert into table value(?????)
,要指出具體要賦值的字段。
7.?
SQL
語(yǔ)句包含多表連接時(shí),必須對(duì)每個(gè)表命名別名,對(duì)每個(gè)字段的使用都要帶上別名。
8.
當(dāng)
SQL
語(yǔ)句含有運(yùn)算符時(shí),運(yùn)算符需與其他字符串用空格區(qū)分
(
或者用括號(hào)分開
)
。否則容易導(dǎo)致以下類似問題。在語(yǔ)句
select a–b from table
中,
a
,
b
均為變量。拼寫該語(yǔ)句時(shí),如果
a=6
,
b= -3
,則語(yǔ)句變?yōu)?/span>
select 6--3 from table
。
--
變?yōu)?/span>
Sql
的注釋,語(yǔ)句報(bào)錯(cuò)。
9.
避免隱含的類型轉(zhuǎn)換。例如在
where
子句中
numeric
型和
int
型的列的比較或相加。
10.?
讀取是指通過
JDBC
讀到的數(shù)據(jù)格式,保存是指保存在
VO
中的數(shù)據(jù)格式,插入或者更新是指
insert
或者
update
語(yǔ)句中的數(shù)據(jù)格式。
??? a)??
整型字段:讀取時(shí)根據(jù)字段設(shè)置保存為
Integer
或者
Long
。
??? b)??
數(shù)字型字段:讀取為
BigDecimal
,并保存為
UFDouble
,插入或者更新時(shí)為
BigDecimal
。
??? c)??
字符型字段:讀取為
String
,并保存為
String
,插入或者更新為
String
。
??? d)??
布爾型字段:讀取為
String(‘Y’ OR ‘N’)
,并保存為
UFBoolean
,插入或者更新時(shí)為
String(‘Y’ OR ‘N’)
。
??? e)??
時(shí)間字段:讀取為
String
,并保存為
UFDateTime
,插入或者更新時(shí)的時(shí)間格式由中間件統(tǒng)一處理,有單獨(dú)需求的要申請(qǐng)后才能決定。
??
11.?
盡量不使用右連接。
12.?
在使用
UNION
或
UNION? ALL
的前后的兩個(gè)
SQL
需要加
( )
。