SQL 规范

一、命名规范

  • 确保名称是唯一的,并且不作为保留关键字存在 。
  • 名称必须以字母开头,并且不得以下划线结尾。
  • 名称中只包含字母,数字和下划线。
  • 在使用空格的地方用下划线代替,但要避免使用很多个连续的下划线 。
  • 避免使用缩写,使用时要确保它们可以被理解。

1. 表

  • 使用集合性的名字,或者使用复数形式。
  • 不要给表格与其中一列相同的名称。
  • 在可能的情况下,避免将两个表名连接在一起以创建关系表的名称。
  • 使用小写字母。

2. 列

  • 始终使用单数名称。
  • 尽可能避免简单地使用id作为表的主要标识符。
  • 不要添加与其表名相同的列。
  • 使用小写字母。

3. 别名

  • 别名应该以某种方式与对象或表达式相关联。
  • 根据经验,别名应该是对象名称中每个单词的第一个字母。
  • 如果已经存在相同的别名,则增加一个数字。
  • 始终包含AS关键字,使其更易于阅读,因为它是明确的。
  • 对于计算数据(SUM()或AVG()),使用会作为表中一列的名字。
SELECT first_name AS fn
  FROM staff AS s1
  JOIN students AS s2
    ON s2.mentor_id = s1.staff_num;

4. 统一后缀

后缀具有通用含义,可确保从SQL代码中轻松读取和理解列。在适当的地方使用正确的后缀。以下为一些例子。

  • _id:一个唯一标识符,例如作为主键的列。
  • _status:标志值或任何类型的其他状态。
  • _total:一组值的总和。
  • _name:标识一个名字。
  • _date:表示包含某些日期的列。

二、查询语法

1. 保留字

  • 保留关键字始终使用大写字母,例如SELECT和WHERE。

2. 空格

为了使代码更易于阅读,正确地补充空格非常重要。不要挤占代码或删除自然语言空间。应该使用空格来排列代码,以便使关键字都在同一个字符边界上结束。如上面例子所示。请注意SELECT,FROM等是右对齐,而实际的列名和实施的具体细节都是左对齐。

总是包含空格的地方:

  • 等号(=)前面和后面;
  • 逗号(,)后面 ;
  • 周围的引号(')不在括号内或后面跟着逗号或分号。

3. 换行

需要换行的地方:

  • AND或OR之前;
  • 在分号后进行分隔以方便阅读;
  • 每个关键字定义后;
  • 在将多个列分隔为逻辑组时的逗号之后;
  • 将代码分成相关部分,这有助于简化大块代码的可读性。
SELECT a.title,
       a.release_date, a.recording_date, a.production_date
  FROM albums AS a
 WHERE a.title = 'Charcoal Lane'
    OR a.title = 'The New Danger';

4. 缩进

为确保SQL可读,遵循缩进标准非常重要。

joins
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';
子查询
SELECT MAX(score)
  FROM score
 WHERE subject_id = 
       (SELECT id
          FROM subject
         WHERE subject = '语文');
首选形式
  • 尽可能利用BETWEEN而不是将多个语句组合在一起AND。
  • 使用IN()而不是多个OR子句。
  • 在离开数据库之前需要解释值时使用CASE 表达式。CASE语句可以嵌套以形成更复杂的逻辑结构。
  • UNION尽可能避免使用条款和临时表。如果可以优化架构以消除对这些功能的依赖,则很可能应该这样做。
SELECT CASE postcode
       WHEN 'BN1' THEN 'Brighton'
       WHEN 'EH1' THEN 'Edinburgh'
       END AS city
  FROM office_locations
 WHERE country = 'United Kingdom'
   AND opening_time BETWEEN 8 AND 9
   AND postcode IN ('EH1', 'BN1', 'NN1', 'KW1')

三、创建语法

1. 选择数据类型

  • 在可能的情况下,请勿使用特定于供应商的数据类型,这些数据类型不可移植,并且可能在同一供应商软件的旧版本中不可用。
  • 仅在浮点数学是绝对必要的情况下使用REAL或FLOAT类型,否则在任何时候都更倾向于使用NUMERIC和DECIMAL,浮点舍入错误令人讨厌。

2. 指定默认值

  • 默认值必须与列的类型相同,如果声明了列DECIMAL,则不提供INTEGER默认值。
  • 默认值必须遵循数据类型声明,并且在任何NOT NULL语句之前 。

3. 约束和键

确定将在定义中形成键的列应该是经过仔细考虑的活动,因为它会影响性能和数据完整性。

  • 键在某种程度上应该是独一无二的。
  • 值的数据类型的一致性以及未来这种变化的可能性较低。
  • 保持键尽可能简单,同时不要害怕在必要时使用联合键。

这是在数据库定义中执行的合理且经过考虑的平衡行为。如果将来需求发生变化,可以对定义进行更改来更新。

  • 表必须至少有一个键才能完整且有用。
  • 首先在CREATE TABLE语句后面指定主键。
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,386评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,142评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,704评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,702评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,716评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,573评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,314评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,230评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,680评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,873评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,991评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,706评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,329评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,910评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,038评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,158评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,941评论 2 355

推荐阅读更多精彩内容

  • 参考教材:飞乐鸟《用色铅笔画世界名画》 工具:辉柏嘉48色彩铅
    seeyakid阅读 2,509评论 2 7
  • 一把小葱,七八根长在一起,底部是难分难解的洁白的葱须,细长的葱白,细长的葱绿,真像纤纤玉指。一根一根分开,小心剥去...
    Lucycee阅读 532评论 0 2
  • 礼拜六 天气阴转小雨 上午和瑶瑶在家写作业,一开始还算顺利,可一会儿就坐不住了,气的我离开她到一边去了。中午到了饭...