领先的逗号或尾随逗号?

时间:2014-01-11 13:48:21

标签: mysql sql sql-server oracle coding-style

我正在为我工​​作的公司编写SQL编码标准。

我读过有关leading is the best option

的文献
select a.name
      ,a.surname
      ,a.address
from person a 

但也落后:

select a.name,
       a.surname,
       a.address
from person a 

non standard at all

select name, is_disabled,
is_policy_checked, is_expiration_checked
from sys.sql_logins;

我的第一个问题是,全球是否接受过任何SQL编码标准。如果没有,为什么不呢?我认为这将是非常有用的。像PEP8这样的东西。

哪种解决这个问题最实用?

提前致谢

2 个答案:

答案 0 :(得分:5)

如果解析并执行查询而没有任何错误。这意味着它符合该语言的基本标准。

至于放置逗号的位置以及如何缩进代码,这完全取决于个人喜好。

是的,人们定义了一些最佳实践,这些实践被大多数人再次视为“最佳实践”,但并非全部。

大多数人都会同意一些最佳实践,但不是全部。

  

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

回到“重要问题”领导逗号或尾随逗号?

我个人觉得在我的代码中使用引号可以更容易,因为它更容易找到下一列的起始位置,或者找到缺少的逗号。

例如在下面的查询中我对堆栈溢出问题之一的答案

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

如果我有一个逗号,那么领先的逗号可以更容易找到丢失的逗号,并且可以准确地告诉这个SELECT查询有多少列。

一些有用的链接

Aaron Bertrand - Best Practices for Stored Procedures

Richard Espinoza SQL Server Concepts and Best Practices to Build Transact SQL Stored Procedures

pinaldave SQL SERVER – Bad Practice of Using Keywords as an Object Name – Avoid Using Keywords as an Object

答案 1 :(得分:0)

如何编写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