數(shù)據(jù)庫高級(jí)操作——規(guī)范

SQL規(guī)范

一队丝、命名規(guī)范

1、整體來說

  • 確保名稱是唯一的腹缩,并且不作為保留關(guān)鍵字存在屿聋。
  • 保持長(zhǎng)度最多為30個(gè)字節(jié) - 實(shí)際上這是30個(gè)字符空扎,除非您使用多字節(jié)字符集。
  • 名稱必須以字母開頭润讥,并且不得以下劃線結(jié)尾转锈。
  • 僅在名稱中使用字母,數(shù)字和下劃線象对。
  • 避免使用多個(gè)連續(xù)的下劃線 - 這些可能難以閱讀黑忱。
  • 避免使用縮寫,如果必須使用它們勒魔,確保它們通常被理解甫煞。

2、Table

  • 使用集體名稱冠绢,或者理想情況下抚吠,使用復(fù)數(shù)形式。 例如(按優(yōu)先順序)staff 弟胀、employees楷力。
  • 表格的名稱不要與其中一列名稱相同。
  • 避免將兩個(gè)表名連接在一起以創(chuàng)建關(guān)系表的名稱孵户。比如命名為services萧朝,而不是cars_mechanics。

3夏哭、Column

  • 使用單數(shù)名稱检柬。
  • 盡可能避免使用id作為表的主要標(biāo)識(shí)符。
  • 不要添加與其表名相同的列竖配,反之亦然何址。
  • 始終使用小寫字母,除非有更有意義的合理的名詞进胯。

4用爪、別名或相關(guān)

  • 應(yīng)該以某種方式與對(duì)象或表達(dá)式相關(guān)聯(lián),它們是別名胁镐。
  • 相關(guān)名稱應(yīng)該是對(duì)象名稱中每個(gè)單詞的第一個(gè)字母偎血。
  • 如果已經(jīng)存在相同名稱的相關(guān)性,則附加一個(gè)數(shù)字盯漂。(s1烁巫、s2)
  • 對(duì)于計(jì)算數(shù)據(jù)(SUM()或AVG()),使用您給它的名稱宠能,如果它是模式中定義的列亚隙。

5、存儲(chǔ)過程

  • 名稱必須包含動(dòng)詞违崇。

6阿弃、統(tǒng)一后綴

以下后綴具有通用含義诊霹,可確保從SQL代碼中輕松讀取和理解列。 在適當(dāng)?shù)牡胤绞褂谜_的后綴渣淳。

_id - 唯一標(biāo)識(shí)符脾还,例如作為主鍵的列。
_status-flag值或任何類型的某些其他狀態(tài)入愧,例如publication_status鄙漏。
_total - 值集合的總和或總和。
_num-表示該字段包含任何類型的數(shù)字棺蛛。
_name-表示名稱怔蚌,例如first_name。
_seq-包含連續(xù)的值序列旁赊。
_date-表示包含某些日期的列桦踊。
_tally-一個(gè)計(jì)數(shù)。
_size-文件大小或衣服等大小终畅。
_addr-記錄的地址可以是物理的或無形的籍胯,例如ip_addr。

7离福、具體大小寫

  • 數(shù)據(jù)庫名: 小寫杖狼,字母之間用下劃線(_)隔開。
  • 表名: 小寫妖爷,字母之間用下劃線(_)隔開本刽。
  • 列名: 小寫,字母之間用下劃線(_)隔開赠涮。
  • 別名: 小駝峰命名法。

二暗挑、查詢語法

1笋除、保留字

始終對(duì)SELECT和WHERE等保留關(guān)鍵字使用大寫。

2炸裆、WHITE SPACE

為了使代碼更易于閱讀垃它,使用正確的間距補(bǔ)碼非常重要。 不要擠占代碼或刪除自然語言空間烹看。

(SELECT f.species_name,
        AVG(f.height) AS average_height, AVG(f.diameter) AS average_diameter
   FROM flora AS f
  WHERE f.species_name = 'Banksia'
     OR f.species_name = 'Sheoak'
     OR f.species_name = 'Wattle'
  GROUP BY f.species_name, f.observation_date)

  UNION ALL

(SELECT b.species_name,
        AVG(b.height) AS average_height, AVG(b.diameter) AS average_diameter
   FROM botanic_garden_flora AS b
  WHERE b.species_name = 'Banksia'
     OR b.species_name = 'Sheoak'
     OR b.species_name = 'Wattle'
  GROUP BY b.species_name, b.observation_date)

行間距
保持所有關(guān)鍵字與右側(cè)對(duì)齊并且左對(duì)齊的值在查詢中間創(chuàng)建一個(gè)統(tǒng)一的間隙国拇。 它使得快速掃描查詢定義變得更加容易。始終包括換行符/垂直空間:

  • 在AND或OR之前
  • 分號(hào)后分隔查詢以便于閱讀
  • 每個(gè)關(guān)鍵字定義后
  • 在將多個(gè)列分隔為邏輯組之后使用逗號(hào)之后
  • 將代碼分成相關(guān)部分惯殊,這有助于簡(jiǎn)化大塊代碼的可讀性酱吝。
INSERT INTO albums (title, release_date, recording_date)
VALUES ('Charcoal Lane', '1990-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000'),
       ('The New Danger', '2008-01-01 01:01:01.00000', '1990-01-01 01:01:01.00000');

3、縮進(jìn)

Join
Join應(yīng)縮進(jìn)到河的另一側(cè)土思,并在必要時(shí)與新線組合务热。

SELECT r.last_name
  FROM riders AS r
       INNER JOIN bikes AS b
       ON r.bike_vin_num = b.vin_num
          AND b.engine_tally > 2

       INNER JOIN crew AS c
       ON r.crew_chief_last_name = c.last_name
          AND c.chief = 'Y';

子查詢
子查詢也應(yīng)該與河流的右側(cè)對(duì)齊忆嗜,然后使用與任何其他查詢相同的樣式進(jìn)行布局。 有時(shí)崎岂,在與開頭伙伴相同的字符位置的新行上使用右括號(hào)是有意義的 - 在嵌套子查詢的情況下尤其如此捆毫。

SELECT r.last_name,
       (SELECT MAX(YEAR(championship_date))
          FROM champions AS c
         WHERE c.last_name = r.last_name
           AND c.confirmed = 'Y') AS last_championship_year
  FROM riders AS r
 WHERE r.last_name IN
       (SELECT c.last_name
          FROM champions AS c
         WHERE YEAR(championship_date) > '2008'
           AND c.confirmed = 'Y');
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市冲甘,隨后出現(xiàn)的幾起案子绩卤,更是在濱河造成了極大的恐慌,老刑警劉巖江醇,帶你破解...
    沈念sama閱讀 216,843評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件濒憋,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡嫁审,警方通過查閱死者的電腦和手機(jī)跋炕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,538評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來律适,“玉大人辐烂,你說我怎么就攤上這事∥婊撸” “怎么了纠修?”我有些...
    開封第一講書人閱讀 163,187評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)厂僧。 經(jīng)常有香客問我扣草,道長(zhǎng),這世上最難降的妖魔是什么颜屠? 我笑而不...
    開封第一講書人閱讀 58,264評(píng)論 1 292
  • 正文 為了忘掉前任辰妙,我火速辦了婚禮,結(jié)果婚禮上甫窟,老公的妹妹穿的比我還像新娘密浑。我一直安慰自己,他們只是感情好粗井,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,289評(píng)論 6 390
  • 文/花漫 我一把揭開白布尔破。 她就那樣靜靜地躺著,像睡著了一般浇衬。 火紅的嫁衣襯著肌膚如雪懒构。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,231評(píng)論 1 299
  • 那天耘擂,我揣著相機(jī)與錄音胆剧,去河邊找鬼。 笑死醉冤,一個(gè)胖子當(dāng)著我的面吹牛赞赖,可吹牛的內(nèi)容都是我干的滚朵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,116評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼前域,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辕近!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起匿垄,我...
    開封第一講書人閱讀 38,945評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤移宅,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后椿疗,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體漏峰,經(jīng)...
    沈念sama閱讀 45,367評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,581評(píng)論 2 333
  • 正文 我和宋清朗相戀三年届榄,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了浅乔。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,754評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡铝条,死狀恐怖靖苇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情班缰,我是刑警寧澤贤壁,帶...
    沈念sama閱讀 35,458評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站埠忘,受9級(jí)特大地震影響脾拆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜莹妒,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,068評(píng)論 3 327
  • 文/蒙蒙 一名船、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧旨怠,春花似錦渠驼、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,692評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽疯趟。三九已至拘哨,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間信峻,已是汗流浹背倦青。 一陣腳步聲響...
    開封第一講書人閱讀 32,842評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盹舞,地道東北人产镐。 一個(gè)月前我還...
    沈念sama閱讀 47,797評(píng)論 2 369
  • 正文 我出身青樓隘庄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國和親癣亚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子丑掺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,654評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容