Luc*_*cas 5 mysql sql sql-server oracle coding-style
我正在为我工作的公司编写SQL编码标准.
我读过的文献说领先是最好的选择
select a.name
,a.surname
,a.address
from person a
Run Code Online (Sandbox Code Playgroud)
但也是尾随:
select a.name,
a.surname,
a.address
from person a
Run Code Online (Sandbox Code Playgroud)
或者完全不标准
select name, is_disabled,
is_policy_checked, is_expiration_checked
from sys.sql_logins;
Run Code Online (Sandbox Code Playgroud)
我的第一个问题是,是否接受了全球任何SQL编码标准.如果没有,为什么不呢?我认为这将是非常有用的.像PEP8这样的东西.
哪个是解决这个问题最实用的方法?
提前致谢
如果解析并执行查询而没有任何错误.这意味着它符合该语言的基本标准.
至于在哪里放逗号以及如何缩进你的代码,一切都归结为个人偏好.
是的,人们定义了一些最佳实践,大多数人再次将其视为"最佳实践",但不是全部.
有一些最佳实践,大多数人会同意但不是全部.
1)事情很聪明,但不是太聪明(KISS /保持简单愚蠢)
2)Parsed查询不是最好的查询,尝试尽可能编写 Covering Queries.
3)使用至少两部分的名称作为您的对象,如[Schema].[TableName]
4)对象(表,列,存储过程)变量和函数都有很好的命名和有意义,而不必过多考虑.
5)你在周末休息后再回来,你可以直接跳进去
6)将重复使用的东西是可重复使用的
7)看起来更干净的代码.将在以后阶段更容易调试和修改.
8)"评论"使用注释来解释代码片段的作用,所以如果你在一个月之后回到它,那么你只需要阅读注释代码所做的事情,而不是实际通过代码本身.
9)将CAPITALS用于"SELECT,FROM,WHERE"等关键词 - < -
为了上面的查询,记住所有这些事情,我会写这样的东西.
SELECT A.NAME
,A.SURNAME
,A.ADDRESS
FROM PERSON A
Run Code Online (Sandbox Code Playgroud)
回到"重要问题"领导逗号或尾随逗号?
我个人觉得在我的代码中使用引号可以更容易,因为它使我更容易找到下一列的起始位置,或者找到缺少的逗号.
例如在下面的查询中我对堆栈溢出问题之一的回答
SELECT radius
, Diameter
, CASE WHEN POWER( @p1 - x, 2) + POWER( @p2 - y, 2) <= POWER(radius, 2)
THEN 'Inside The Circle'
WHEN POWER( @p1 - x, 2) + POWER( @p2 - y, 2) > POWER(radius, 2)
THEN 'Outside the Circle' END [Inside/Outside]
FROM @t
Run Code Online (Sandbox Code Playgroud)
如果我有一个逗号,那么领先的逗号可以更容易找到丢失的逗号,并且可以准确地告诉这个SELECT查询有多少列.
一些有用的链接
Richard Espinoza构建Transact SQL存储过程的SQL Server概念和最佳实践
pinaldave SQL SERVER - 使用关键字作为对象名称的不良做法 - 避免使用关键字作为对象
对于如何编写 SQL 代码没有单一的标准。有些使用大写关键字,有些使用小写。有些使用尾随逗号,有些使用前导逗号,有些将所有值放在同一行。
在普通文本中,您使用尾随逗号,这样对于大多数人来说更容易阅读。使用前导逗号的一个优点是最后一项的格式与其他项没有不同,但另一方面,第一项的格式不同。
解决这个问题的实际方法是在你所属的组织中选择一个合理的标准,并坚持下去。拥有外观一致的代码比试图找到优点最多、缺点最少的格式更有用。
举个例子,经过多年尝试不同的变体,这是我开始使用的格式:
select
p.Name,
p.Surname,
a.Street,
a.Zip,
a.City
from
Person p
inner join Address a on a.AdressId = p.AddressId
where
p.PersonId = 42
Run Code Online (Sandbox Code Playgroud)