数据库高级操作——规范

2019-03-30  本文已影响0人  Harper324

SQL规范

一、命名规范

1、整体来说

2、Table

3、Column

4、别名或相关

5、存储过程

6、统一后缀

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

_id - 唯一标识符,例如作为主键的列。
_status-flag值或任何类型的某些其他状态,例如publication_status。
_total - 值集合的总和或总和。
_num-表示该字段包含任何类型的数字。
_name-表示名称,例如first_name。
_seq-包含连续的值序列。
_date-表示包含某些日期的列。
_tally-一个计数。
_size-文件大小或衣服等大小。
_addr-记录的地址可以是物理的或无形的,例如ip_addr。

7、具体大小写

二、查询语法

1、保留字

始终对SELECT和WHERE等保留关键字使用大写。

2、WHITE SPACE

为了使代码更易于阅读,使用正确的间距补码非常重要。 不要挤占代码或删除自然语言空间。

(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)

行间距
保持所有关键字与右侧对齐并且左对齐的值在查询中间创建一个统一的间隙。 它使得快速扫描查询定义变得更加容易。始终包括换行符/垂直空间:

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、缩进

Join
Join应缩进到河的另一侧,并在必要时与新线组合。

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 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');
上一篇下一篇

猜你喜欢

热点阅读