SQL語句規(guī)范有哪些

這篇文章將為大家詳細講解有關(guān)SQL語句規(guī)范有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。

成都創(chuàng)新互聯(lián)公司是一家以網(wǎng)絡(luò)技術(shù)公司,為中小企業(yè)提供網(wǎng)站維護、成都網(wǎng)站制作、做網(wǎng)站、網(wǎng)站備案、服務(wù)器租用、域名注冊、軟件開發(fā)、微信小程序開發(fā)等企業(yè)互聯(lián)網(wǎng)相關(guān)業(yè)務(wù),是一家有著豐富的互聯(lián)網(wǎng)運營推廣經(jīng)驗的科技公司,有著多年的網(wǎng)站建站經(jīng)驗,致力于幫助中小企業(yè)在互聯(lián)網(wǎng)讓打出自已的品牌和口碑,讓企業(yè)在互聯(lián)網(wǎng)上打開一個面向全國乃至全球的業(yè)務(wù)窗口:建站服務(wù)熱線:18980820575

書寫風(fēng)格

1. 語句關(guān)鍵字應(yīng)全部使用小寫。

2. 引用字符時應(yīng)使用單引號。如:update testable set idcol=’abcd’。

3. 連接符或運算符or、in、and、=、<=、>=, +,- 等前后宜加上一個空格。否則容易導(dǎo)致以下類似問題。例如在語句select a–b from table中,a,b均為變量,拼寫該語句時,如果a = 6,b = -3,則語句變?yōu)閟elect 6--3 from table。--被視為SQL的注釋,結(jié)果語句報錯。

4. 不得使用“select * from …”語法,必須標明字段名。即select col1, col2,… from tablea where …

5. 嚴禁使用“insert into table_name values (?,?,……)”語法,統(tǒng)一使用“insert into table_name (col1,col2,……) values (?,?,…...)”。

6. SQL語句包含多表連接時,必須加上表的別名,對每個字段的使用都要帶上表別名。

select a.col1, a.col2, b.col3 from tablea a, tableb b where a.col4=b.col5

7. 應(yīng)避免顯式或隱含的類型轉(zhuǎn)換。例如在where子句中numeric型和int型的列的比較。

8. 在子查詢中前后必須加上括號。

select col1, col2 from tablea where col3 in ( select col4 from tableb where col4>0)

9. 執(zhí)行SQL時一次應(yīng)只執(zhí)行一條,如果多條語句則應(yīng)分開執(zhí)行,但必須保持在一個事務(wù)中。不得一次執(zhí)行通過分號等分開的多條語句,這樣處理不清晰。

10. 如果能采用or代替,則不宜使用in 語句。in語句中的元素不得超過500個,如果超過,則應(yīng)拆分為多條SQL語句。嚴禁使用xx in(‘’,’’….) or xx in(‘’,’’,’’)。

11. or連接條件不得超過 500,超過時應(yīng)拆分為多條語句。

性能優(yōu)化

1. 查詢時應(yīng)盡量減少多余數(shù)據(jù)的讀取,通過使用where子句來減少返回的記錄數(shù)。

2. 如果在語句中有not in(in)操作,應(yīng)盡量用not exists(exists)來代替。特別對大數(shù)據(jù)量的兩者檢索速度有很明顯的區(qū)別。

3. 不宜使用外連接。外連接效率低。

4. 一條SQL語句中不宜使用3層以上的嵌套查詢。如果超過,則應(yīng)在Java等應(yīng)用服務(wù)器程序中處理。

5. 一條SQL語句中不得從4個及以上表中同時取數(shù)。僅作關(guān)聯(lián)或過濾條件而不涉及取數(shù)的表不參與表個數(shù)計算;如果必須關(guān)聯(lián)4個或4個以上表,應(yīng)在Java等應(yīng)用服務(wù)器程序中處理。

6. 應(yīng)盡量避免使用order by和group by排序操作,如必須使用排序操作,盡量建立在有索引的列上。因為大量的排序操作影響系統(tǒng)性能。

7. 對索引列的比較,應(yīng)盡量避免使用not 或 !=,可拆分為幾個條件。因為“not”和“!=”不會使用索引。如col1 是索引列,條件col1 !=0 可以拆分為col1 >0 or col2 <0。

8. 應(yīng)盡量將數(shù)據(jù)庫函數(shù)、計算表達式寫在邏輯操作符右邊。因為這些對列的操作會將導(dǎo)致表掃描,影響性能。

9. 在where子句中,如果有多個過濾條件,應(yīng)將索引列或過濾記錄數(shù)最多的條件放在前面。

10. 能用連接方式實現(xiàn)的功能,不得用子查詢。例如:select name from customer where customerId in ( select customerId from order where money > 1000)。 應(yīng)該用如下語句代替:select name from customer inner join order on customer.customerId = order.customerId where order.money > 100?;?select name from customer where exists ( select 1 from order where money > 1000 and customer.customerId = order.customerId) <這里需要注意:使用exists的效率依賴于匹配度,inner join效率比較穩(wěn)定>

11. 多表關(guān)聯(lián)查詢時,寫法可遵循以下原則,這樣做有利于建立索引,提高查詢效率。格式如下:select sum (t1.je) from table1 t1, table2 t2, table3 t3 where (t1的等值條件(=)) and (t1的非等值條件) and (t2與t1的關(guān)聯(lián)條件) and (t2的等值條件) and (t2的非等值條件) and (t3與t2的關(guān)聯(lián)條件) and (t3的等值條件) and (t3的非等值條件)。

跨數(shù)據(jù)庫支持

1. 對于跨數(shù)據(jù)庫Java應(yīng)用程序的VO映射數(shù)據(jù)庫的數(shù)據(jù)格式建議:
1) 整型字段:字段設(shè)置保存為Integer或者Long
2) 數(shù)字型字段:若需要使用小數(shù)2位以上的精確計算,讀取、插入、更新使用BigDecimal類型
3) 字符型字段:讀取為String,并保存為String,插入或者更新為String 4) 時間字段:讀取為String,插入或者更新時的時間格式使用中間件統(tǒng)一處理。

2. 字符串連接應(yīng)使用“||”符號,而不應(yīng)使用“+”?!?”是SQLServer語法,Oracle和DB2支持“||”,Hibernate轉(zhuǎn)化為SQLServer時,會自動將“||”轉(zhuǎn)為“+”。

3. 通配符不能使用‘[a-c]%’這種形式。應(yīng)寫成如:

select col1, col2 from table_name where col1 like ‘[a]%’ OR col1 like ‘[b]%’ OR col1 like ‘[c]%’

4. 截取字符串長度函數(shù)應(yīng)使用substr,起始位置為1表示從頭開始。因為db2中substr起點為1,0會報錯;在SqlServer數(shù)據(jù)庫中使用的是substring需要進行轉(zhuǎn)換。

5. 不得通過select percent n和select top n限制查詢結(jié)果集的記錄數(shù)。

6. join 與on 必須嚴格匹配,嚴禁出現(xiàn)沒有on的join。

7. join…on 后面不宜使用or,如果使用則需將or的范圍用( )括起來。

8. 不得使用select into 的格式。Select into是SQL Server特有語法,因為Oracle和DB2不支持。

9. 應(yīng)將Null值與空字符串(長度為零的字符串)視為不同。雖然Oracle視Null與空字符串為相同,但DB2和SQL Server卻視為不同。

關(guān)于SQL語句規(guī)范有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

當前題目:SQL語句規(guī)范有哪些
標題鏈接:http://m.kartarina.com/article22/jedecc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、品牌網(wǎng)站建設(shè)網(wǎng)站改版、做網(wǎng)站、外貿(mào)建站網(wǎng)站設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機網(wǎng)站建設(shè)
主站蜘蛛池模板: 色综合久久久无码中文字幕波多| 最新国产AV无码专区亚洲| 无码中文字幕日韩专区视频| 无码人妻精品一区二区三 | 特级无码毛片免费视频尤物| 蜜桃臀无码内射一区二区三区| 国产精品亚洲а∨无码播放不卡| 亚洲国产精品无码中文字| 国产乱人伦中文无无码视频试看| 国产品无码一区二区三区在线蜜桃| 日韩精品无码AV成人观看| 亚洲 无码 在线 专区| 玖玖资源站无码专区| 国产日韩AV免费无码一区二区| 久久亚洲AV成人无码国产电影 | 无码人妻丰满熟妇区BBBBXXXX | 无码少妇精品一区二区免费动态| 精品亚洲av无码一区二区柚蜜 | 精品久久久久久无码不卡| 中文字幕人妻三级中文无码视频| 色综合无码AV网站| 无码人妻一区二区三区在线视频| 综合无码一区二区三区| 成在人线AV无码免费| 亚洲午夜无码久久久久小说 | 极品无码国模国产在线观看| 亚洲AV无码一区二区三区人| 久久亚洲AV成人无码电影| 久久无码无码久久综合综合| 亚洲成A∨人片天堂网无码| 狠狠久久精品中文字幕无码| 毛片一区二区三区无码| 无码狠狠躁久久久久久久| 亚洲av成人中文无码专区| 亚洲AV无码成人精品区日韩| 无码AV大香线蕉| 国产成人无码精品久久久露脸| 久久亚洲精品成人无码| 亚洲免费无码在线| 国内精品无码一区二区三区| 亚洲国产AV无码专区亚洲AV|