Существуют ли опубликованные правила стиля кодирования для SQL?
Часто я получаю очень сложные инструкции SQL, и я задавался вопросом, существует ли там директива по стилю, которая диктует общий способ выделения различных аспектов запроса.
Я ищу что-то описательное по строкам Python PEP8 или Zend Frameworks, а не код на примере.
Большинство моих запросов написаны для MySQL.
Знаете ли вы о универсальном руководстве по стилю? Возможно, вы сами написали. Поделитесь своими рекомендациями.
Ответы
Ответ 1
С тех пор как я задал этот вопрос, я написал общедоступное руководство по стилю SQL, совместимое с книгой по стилю программирования SQL Joe Celko под лицензией Creative Commons Attribution-ShareAlike.
Он доступен на сайте www.sqlstyle.guide или в виде уценки прямо из репозитория GitHub.
Ответ 2
Ниже приведены некоторые рекомендации и рекомендации по программированию SQL:
- Не используйте SELECT * в своих запросах.
- Всегда используйте псевдонимы таблиц, когда оператор SQL содержит несколько источников.
- Используйте более читаемые условия соединения ANSI-Standard, а не объединения старого стиля.
- Не используйте номера столбцов в предложении ORDER BY.
- Всегда используйте список столбцов в своих инструкциях INSERT.
- Никогда не используйте двойные кавычки в коде T-SQL.
- Не префикс имен хранимых процедур "sp_".
- Всегда используйте форматировщик SQL для форматирования вашего SQL, например Instant SQL Formatter (бесплатный и онлайн)
Вы можете проверить подробное объяснение этих лучших практик в этом сообщении в блоге.
Ответ 3
Два справочника, которые я знаю, Joe Celko SQL Programming Style и почтенный Код завершен.
Также существует стандарт SQL-92. Он не содержит раздел стиля, но вы можете считать его стиль неявным каноническим.
Ответ 4
MySQL имеет краткое описание своих более или менее строгих правил:
https://dev.mysql.com/doc/internals/en/coding-style.html
Наиболее распространенный стиль кодирования для MySQL от Simon Holywell:
http://www.sqlstyle.guide/
Смотрите также этот вопрос:
Существует ли соглашение об именах для MySQL?
Ответ 5
Задумывались ли вы о том, чтобы ваша команда использовала инструмент со встроенными возможностями форматирования? Это для жабы для MySql. Его не будет руководством как таковым, но по крайней мере приведет к некоторой последовательности.
Ответ 6
Kickstarter имеет руководство по стилю здесь. У меня есть модифицированная версия этого для людей, которые предпочитают строчные буквы SQL и Celko "река".
Мой гид по стилю здесь. Вот образец:
-- 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 p
where p.SellEndDate is null
and p.SellStartDate is not null
-- basic delete example
delete cc
from Sales.CreditCard cc
where cc.ExpYear < '2003'
and cc.ModifiedDate < dateadd(year, -1, getutcdate())