通常我会得到非常复杂的SQL语句,我想知道是否有样式指南可以规定一种常见的方式来解决查询的各个方面。
我正在寻找与Python's PEP8或Zend Frameworks guidelines一致的描述性内容,而不是代码示例。
我的大多数查询都是为MySQL编写的。
您知道通用风格指南吗?也许你自己写过一本。请分享您的指南。
答案 0 :(得分:6)
自从提出这个问题以来,我已经编写了一个公共SQL样式指南,该指南与知识共享署名 - ShareAlike许可下的Joe Celko的SQL编程风格书兼容。
可在www.sqlstyle.guide或markdown directly from the GitHub repo获得。
答案 1 :(得分:5)
以下是我们收集的一些SQL编程指南和最佳实践:
您可以在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编码方式:
答案 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有此功能。它不会成为这样的指南,但至少会带来一些一致性。