2014-01-11 76 views
3

我正在为我工​​作的公司写作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

有没有一个标准?或许不是'正式',尽管最后看到逗号更常见。这就是说,我在开始时更喜欢逗号。它更具可读性,我不太可能忘记逗号。我有一些特别的风格,这里有些讨厌,但它适合我。 – Strawberry

+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 
4

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

至于在哪里放置逗号以及如何将您的代码缩进到其个人喜好。

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

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

1)事情是聪明的,但不能太聪明(KISS /保持简单 愚蠢)

2)解析的查询是不是最好的查询,尝试写 Covering Queries当过可能的。

3)为您的对象使用至少两部分名称,如[架构]。[表名]

4)对象 (表,列,存储过程)变量和函数以及 命名和意义,而不必想太多。

5)你回来给它的周末休息后,你可以直接跳到在

6)事情需要再次使用可重复使用

7)代码 看起来比较清爽。将在后期更容易调试和修改。

8)“注释”使用注释来解释一段代码做了什么, 所以如果你一个月打完回来它,你就会知道刚刚 阅读注释代码做什么而不是实际发生 通过代码本身。

9)资金使用像关键词 “ 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