<span id="plx27"><var id="plx27"></var></span>
<dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>

    SQL樣式指南 SQL Style Guide

    上傳人:ta****fu 文檔編號(hào):210920316 上傳時(shí)間:2023-05-18 格式:DOCX 頁(yè)數(shù):11 大?。?5.21KB
    收藏 版權(quán)申訴 舉報(bào) 下載
    SQL樣式指南 SQL Style Guide_第1頁(yè)
    第1頁(yè) / 共11頁(yè)
    SQL樣式指南 SQL Style Guide_第2頁(yè)
    第2頁(yè) / 共11頁(yè)
    SQL樣式指南 SQL Style Guide_第3頁(yè)
    第3頁(yè) / 共11頁(yè)

    下載文檔到電腦,查找使用更方便

    9.98 積分

    下載資源

    還剩頁(yè)未讀,繼續(xù)閱讀

    資源描述:

    《SQL樣式指南 SQL Style Guide》由會(huì)員分享,可在線閱讀,更多相關(guān)《SQL樣式指南 SQL Style Guide(11頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

    1、SQL樣式指南 SQL Style GuideOverview 綜述你可以直接使用這些指導(dǎo)方針,或者fork后創(chuàng)建自己的版本最重要的是選擇一套方針并嚴(yán)格遵守它。歡迎通過(guò)提交issue或pull request來(lái)提交建議或修復(fù)bug。為了讓閱讀了Joe Celko的SQL ProgrammingStyle的團(tuán)隊(duì)能更容易采用這套規(guī)則, 這套原則被設(shè)計(jì)成與該書(shū)的兼容的形式。該指南在某些領(lǐng)域嚴(yán)格一些,在另一些領(lǐng)域松懈一些。 當(dāng)然該指南比Celko的書(shū)更簡(jiǎn)潔一些,因?yàn)镃elko的書(shū)包含了一些趣聞和每一條原則后的理由。將該文檔的Markdown format格式添加到項(xiàng)目代碼庫(kù)中或?qū)⒃擁?yè)面的鏈接發(fā)送給所有

    2、項(xiàng)目的參與者要比傳閱實(shí)體書(shū)容易得多。Simon Holywell所著的SQL樣式指南以署名-相同方式共享 4.0 國(guó)際協(xié)議發(fā)布,改編自sqlstyle.guide。General 一般原則Do 應(yīng)該做的事情 使用一致的、敘述性的名稱(chēng)。 靈活使用空格和縮進(jìn)來(lái)增強(qiáng)可讀性。 存儲(chǔ)符合ISO-8601標(biāo)準(zhǔn)的日期格式(YYYY-MM-DD HH:MM:SS.SSSSS)。 最好使用標(biāo)準(zhǔn)SQL函數(shù)而不是特定供應(yīng)商的函數(shù)以提高可移植性。 保證代碼簡(jiǎn)潔明了并消除多余的SQL比如非必要的引號(hào)或括號(hào),或者可以推導(dǎo)出的多余WHERE語(yǔ)句。 必要時(shí)在SQL代碼中加入注釋。優(yōu)先使用C語(yǔ)言式的以/*開(kāi)始以*/結(jié)束的塊注釋

    3、,或使用以-開(kāi)始的行注釋。Avoid 應(yīng)避免的事情 駝峰命名法它不適合快速掃描。 描述性的前綴或匈牙利命名法比如sp_或tbl。 復(fù)數(shù)形式盡量使用更自然的集合術(shù)語(yǔ)。比如,用“staff”替代“employees”,或用“people”替代“individuals”。 需要引用號(hào)的標(biāo)識(shí)符如果你必須使用這樣的標(biāo)識(shí)符,最好堅(jiān)持用SQL92的雙引號(hào)來(lái)提高可移植性。 面向?qū)ο缶幊痰脑瓌t不該應(yīng)用到結(jié)構(gòu)化查詢(xún)語(yǔ)言或數(shù)據(jù)庫(kù)結(jié)構(gòu)上。Naming conventions 命名慣例General 一般原則 保證名字獨(dú)一無(wú)二且不是保留字。 保證名字長(zhǎng)度不超過(guò)30個(gè)字節(jié)。 名字要以字母開(kāi)頭,不能以下劃線結(jié)尾。 只在名字

    4、中使用字母、數(shù)字和下劃線。 不要在名字中出現(xiàn)連續(xù)下劃線這樣很難辨認(rèn)。 在名字中需要空格的地方用下劃線代替。 盡量避免使用縮寫(xiě)詞。使用時(shí)一定確定這個(gè)縮寫(xiě)簡(jiǎn)明易懂。Tables 表名 用集群名稱(chēng),或在不那么理想的情況下,復(fù)數(shù)形式。如staff和employees。 不要使用類(lèi)似tbl或其他的描述性的前綴或匈牙利命名法。 表不應(yīng)該同它的列同名,反之亦然。 盡量避免連接兩個(gè)表的名字作為關(guān)系表(relationship table)的名字。與其使用cars_mechanics做表名不如使用services。Columns 列名 總是使用單數(shù)形式。 避免直接使用id做表的主標(biāo)識(shí)符。 避免列名同表名同名,反

    5、之亦然。 總是使用小寫(xiě)字母,除非是特殊情況,如專(zhuān)有名詞。Aliasing or correlations 別名與關(guān)聯(lián)名 應(yīng)該與它們別名的對(duì)象或與它們代表的表達(dá)式相關(guān)聯(lián)。 一般來(lái)說(shuō),關(guān)聯(lián)名應(yīng)該是對(duì)象名的第一個(gè)字母。 如果已經(jīng)有相同的關(guān)聯(lián)名了,那么在關(guān)聯(lián)名后加一個(gè)數(shù)字。 總是加上AS關(guān)鍵字,因?yàn)檫@樣的顯示聲明易于閱讀。 為計(jì)算出的數(shù)據(jù)命名時(shí),用一個(gè)將這條數(shù)據(jù)存在表里時(shí)會(huì)使用的列名。Stored procedures 過(guò)程名 名字一定要包含動(dòng)詞。 不要附加sp_或任何其他這樣的敘述性前綴或使用匈牙利表示法。Uniform suffix 統(tǒng)一的后綴下列后綴有統(tǒng)一的意義,能保證SQL代碼更容易被理解。在

    6、合適的時(shí)候使用正確的后綴。 _id獨(dú)一無(wú)二的標(biāo)識(shí)符,如主鍵。 _status標(biāo)識(shí)值或任何表示狀態(tài)的值,比如publication_status。 _total總和或某些值的和。 _num表示該域包含數(shù)值。 _name表示名字。 _seq包含一系列數(shù)值。 _date表示該列包含日期。 _tally計(jì)數(shù)值。 _size大小,如文件大小或服裝大小。 _addr地址,有形的或無(wú)形的,如ip_addrQuery syntax 查詢(xún)語(yǔ)句Reserved words 保留字保留字總是大寫(xiě),如SELECT和WHERE。最好使用保留字的全稱(chēng)而不是簡(jiǎn)寫(xiě),用ABSOLUTE而不用ABS。當(dāng)標(biāo)準(zhǔn)ANSI SQL關(guān)鍵字

    7、能完成相同的事情時(shí),不要使用數(shù)據(jù)庫(kù)服務(wù)器相關(guān)的關(guān)鍵字,這樣能增強(qiáng)可移植性。White space 空白字符正確地使用空白字符對(duì)清晰的代碼十分重要。不要把代碼堆再一起或移除自然語(yǔ)言中的空格。Spaces 空格用空格使根關(guān)鍵字都結(jié)束在同一列上。在代碼中形成一個(gè)從上到下的“川流”,這樣幫助讀者快速掃描代碼并將關(guān)鍵字和實(shí)現(xiàn)細(xì)節(jié)分開(kāi)。川流在排版時(shí)應(yīng)該避免,但是對(duì)書(shū)寫(xiě)SQL語(yǔ)句是有幫助的。注意WHERE和FROM等關(guān)鍵字,都右對(duì)齊,而真實(shí)的列名都左對(duì)齊。注意下列情況總是加入空格: 在等號(hào)前后(=) 在逗號(hào)后(,) 單引號(hào)前后(),除非單引號(hào)后面是括號(hào)、逗號(hào)或分號(hào)Line spacing 換行總是換行的情況

    8、: 在AND或OR前。 在分號(hào)后(分隔語(yǔ)句以提高可讀性)。 在每個(gè)關(guān)鍵詞定以后。 將多個(gè)列組成一個(gè)邏輯組時(shí)的逗號(hào)后。 將代碼分隔成相關(guān)聯(lián)的多個(gè)部分,幫助提高大段代碼的可讀性。讓所有的關(guān)鍵字右對(duì)齊,讓所有的值左對(duì)齊,在查詢(xún)語(yǔ)句中間留出一個(gè)空隙。這樣能提高速讀代碼的速讀。Identation 縮進(jìn)為確保SQL的可讀性,一定要遵守下列規(guī)則。Joins Join語(yǔ)句Join語(yǔ)句應(yīng)該縮進(jìn)到川流的另一側(cè)并在必要的時(shí)候添加一個(gè)換行。Subqueries 子查詢(xún)子查詢(xún)應(yīng)該在川流的右側(cè)對(duì)齊并使用其他查詢(xún)相同的樣式。有時(shí)候?qū)⒂依ㄌ?hào)單獨(dú)置于一行并同與它配對(duì)的左括號(hào)對(duì)齊是有意義的尤其是當(dāng)存在嵌套子查詢(xún)的時(shí)候。Pref

    9、erred formalisms 推薦的形式 盡量使用BETWEEN而不是多個(gè)AND語(yǔ)句。 同樣地,使用IN()而不是多個(gè)OR語(yǔ)句。 當(dāng)數(shù)據(jù)輸出數(shù)據(jù)庫(kù)時(shí)需要處理時(shí),使用CASE表達(dá)式。CASE語(yǔ)句能嵌套形成更復(fù)雜的邏輯結(jié)構(gòu)。 盡量避免UNION語(yǔ)句和臨時(shí)表。如果數(shù)據(jù)庫(kù)架構(gòu)能夠不靠這些語(yǔ)句運(yùn)行,那么多數(shù)情況下它就不應(yīng)該依靠這些語(yǔ)句。Create syntax 創(chuàng)建語(yǔ)句聲明模式信息時(shí)維護(hù)可讀代碼也很重要。所以列定義的順序和分組一定要有意義。在CREATE定義中,每列要縮進(jìn)4個(gè)空格。Choosing data types 選擇數(shù)據(jù)類(lèi)型 盡量不使用供應(yīng)商相關(guān)的數(shù)據(jù)類(lèi)型這些類(lèi)型可不能能在老系統(tǒng)上使用。

    10、只在真的需要浮點(diǎn)數(shù)運(yùn)算的時(shí)候才使用REAL和FLOAT類(lèi)型,否則使用NUMERIC和DECIMAL類(lèi)型。浮點(diǎn)數(shù)舍入誤差是個(gè)麻煩。Specifying default values 指定默認(rèn)類(lèi)型 默認(rèn)值一定與列的類(lèi)型相同如果一個(gè)列的類(lèi)型是DECIMAL那么就不要使用INTEGER類(lèi)型作為默認(rèn)值。 默認(rèn)值要緊跟類(lèi)型聲明并在NOT NULL聲明前。約束和鍵約束和鍵是構(gòu)成數(shù)據(jù)庫(kù)系統(tǒng)的重要組成部分。它們能很快地變得難以閱讀和理解,所以遵從指導(dǎo)方針是很重要的。Choosing keys 選擇鍵設(shè)計(jì)時(shí)應(yīng)該謹(jǐn)慎選擇構(gòu)成鍵的列,因?yàn)殒I既明顯影響著性能和數(shù)據(jù)完整性。1. 鍵在某種程度上應(yīng)該是獨(dú)一無(wú)二的。2. 該值

    11、在不同表中的類(lèi)型應(yīng)該相同并且盡量不會(huì)更改。3. 該值是否會(huì)無(wú)法通過(guò)某種標(biāo)準(zhǔn)格式(如ISO發(fā)布的標(biāo)準(zhǔn))?如4. 盡量讓鍵保持簡(jiǎn)單,但在適當(dāng)情況下不要害怕使用復(fù)合鍵。以上是定義數(shù)據(jù)庫(kù)時(shí)合乎邏輯的平衡做法。當(dāng)需求變更時(shí),鍵也應(yīng)該根據(jù)情況更新。Defining constraints 定義約束確定鍵后,就可以用約束和字值段驗(yàn)證來(lái)定義它們。General 概述 表至少需要一個(gè)鍵來(lái)保證其完整性和可用性。 約束應(yīng)該有名字,除了UNIQUE、PRIMARY KEY和FOREIGN KEY之外。Layout and order 布局和順序 在CREATE TABLE語(yǔ)句后先定義主鍵。 約束的定義應(yīng)該緊跟它相應(yīng)的

    12、列的定義后。 如果該約束與多個(gè)列相關(guān),那么讓它盡量離與其相關(guān)的列距離越近越好。實(shí)在不行就講它放在表定義的最后。 如果是與整個(gè)表相關(guān)聯(lián)表級(jí)別的約束,那么就將放在表的定義的最后。 按照字母順序安排定義,ON DELETE排在ON UPDATE前。 有道理的話,把所有相關(guān)的語(yǔ)句對(duì)齊。比如,把所有NOT NULL定義對(duì)齊到同一列。雖然這樣的做法有些慢,但是能提高可讀性。Validation 校驗(yàn) 用LIKE和SIMILAR TO約束來(lái)保證格式已知字符串的數(shù)據(jù)完整性。 當(dāng)數(shù)字的值的范圍可以確定時(shí),用CHECK()來(lái)防止錯(cuò)誤的值進(jìn)入數(shù)據(jù)庫(kù)或被錯(cuò)誤地轉(zhuǎn)換。大部分情況下至少要確認(rèn)值要大于零。 CHECK()約束應(yīng)該在單獨(dú)的語(yǔ)句中以便debug。Example:Design to avoid 面向?qū)ο笤O(shè)計(jì)思想并不適用于關(guān)系型數(shù)據(jù)庫(kù)避免這個(gè)陷阱。 將值存入一列并將單位存在另一列。列的定義應(yīng)該讓自己的單位不言自明以避免在應(yīng)用內(nèi)進(jìn)行合并。使用CHECK()來(lái)保證數(shù)據(jù)庫(kù)中的數(shù)據(jù)是合法的。 EAV (Entity Attribute Value)表用特殊的產(chǎn)品來(lái)處理無(wú)模式數(shù)據(jù)。 因?yàn)槟承┰颍ㄈ鐬榱藲w檔、為了劃分跨國(guó)公司的區(qū)域)將能合并在一起的表分開(kāi)。這樣的設(shè)計(jì)導(dǎo)致以后必須使用UNION操作而不能直接查詢(xún)一個(gè)表。

    展開(kāi)閱讀全文
    溫馨提示:
    1: 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
    2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
    3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
    4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
    5. 裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
    6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
    7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

    相關(guān)資源

    更多
    正為您匹配相似的精品文檔
    關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

    copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

    備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


    本站為文檔C2C交易模式,即用戶(hù)上傳的文檔直接被用戶(hù)下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!

    欧美久久久一区二区三区,国产精品亚洲一区二区无码,亚洲国产精品综合久久20声音,亚洲国产精品无码久久久蜜芽
    <span id="plx27"><var id="plx27"></var></span>
    <dfn id="plx27"><var id="plx27"></var></dfn>
  • <span id="plx27"><code id="plx27"><input id="plx27"></input></code></span>
    <menu id="plx27"></menu><menuitem id="plx27"><thead id="plx27"><input id="plx27"></input></thead></menuitem>
  • <label id="plx27"><code id="plx27"></code></label>
    <label id="plx27"><button id="plx27"></button></label>