SQL是否有任何已发布的编码风格指南?

时间:2011-05-10 14:01:23

标签: mysql sql coding-style

通常我会得到非常复杂的SQL语句,我想知道是否有样式指南可以规定一种常见的方式来解决查询的各个方面。

我正在寻找与Python's PEP8Zend Frameworks guidelines一致的描述性内容,而不是代码示例。

我的大多数查询都是为MySQL编写的。

您知道通用风格指南吗?也许你自己写过一本。请分享您的指南。

6 个答案:

答案 0 :(得分:6)

自从提出这个问题以来,我已经编写了一个公共SQL样式指南,该指南与知识共享署名 - ShareAlike许可下的Joe Celko的SQL编程风格书兼容。

可在www.sqlstyle.guidemarkdown directly from the GitHub repo获得。

答案 1 :(得分:5)

以下是我们收集的一些SQL编程指南和最佳实践:

  • 不要在查询中使用SELECT *。
  • 当SQL语句涉及多个源时,始终使用表别名。
  • 使用更易读的ANSI-Standard Join子句代替旧样式连接。
  • 请勿在ORDER BY子句中使用列号。
  • 始终在INSERT语句中使用列列表。
  • 不要在T-SQL代码中使用双引号。
  • 请勿使用“sp_”为存储过程名称添加前缀。
  • 始终使用SQL格式化程序格式化您的SQL,如Instant SQL Formatter(免费和在线)

您可以在this blog post中查看这些最佳做法的详细说明。

答案 2 :(得分:4)

我知道的两个指南是Joe Celko's SQL Programming Style和尊敬的Code Complete

还有SQL-92 standard。它不包含样式部分,但您可能会认为它的样式是隐式规范。

答案 3 :(得分:2)

MySQL对其或多或少严格的规则进行简短描述:

https://dev.mysql.com/doc/internals/en/coding-style.html

Simon Holywell最常用的MySQL编码方式:

http://www.sqlstyle.guide/

另见这个问题: Is there a naming convention for MySQL?

答案 4 :(得分:1)

Kickstarter has a style guide here。对于喜欢小写SQL和Celko's "river"的人,我有一个修改过的版本。

My style guide is here。这是一个示例:

-- basic select example
select p.Name as ProductName
     , p.ProductNumber
     , pm.Name as ProductModelName
     , p.Color
     , p.ListPrice
  from Production.Product as p
  join Production.ProductModel as pm
    on p.ProductModelID = pm.ProductModelID
 where p.Color in ('Blue', 'Red')
   and p.ListPrice < 800.00
   and pm.Name like '%frame%'
 order by p.Name

-- basic insert example
insert into Sales.Currency (
    CurrencyCode
    ,Name
    ,ModifiedDate
)
values (
    'XBT'
    ,'Bitcoin'
    ,getutcdate()
)

-- basic update example
update p
   set p.ListPrice = p.ListPrice * 1.05
     , p.ModifiedDate = getutcdate()
  from Production.Product as p
 where p.SellEndDate is null
   and p.SellStartDate is not null

-- basic delete example
delete cc
  from Sales.CreditCard as cc
 where cc.ExpYear < '2003'
   and cc.ModifiedDate < dateadd(year, -1, getutcdate())

答案 5 :(得分:0)

您是否考虑让您的团队使用具有内置格式化功能的工具?MySql的Toad有此功能。它不会成为这样的指南,但至少会带来一些一致性。