В моей последней работе мы работали над приложением, очень загруженным базой данных, и я разработал некоторые стандарты форматирования, чтобы мы все писали SQL с общей компоновкой. Мы также разработали стандарты кодирования, но они в большей степени зависят от платформы, поэтому я не буду вдаваться в них здесь.
Мне интересно знать, что другие люди используют для стандартов форматирования SQL. В отличие от большинства других сред программирования, я не нашел для них консенсуса в Интернете.
Чтобы охватить основные типы запросов:
select
ST.ColumnName1,
JT.ColumnName2,
SJT.ColumnName3
from
SourceTable ST
inner join JoinTable JT
on JT.SourceTableID = ST.SourceTableID
inner join SecondJoinTable SJT
on ST.SourceTableID = SJT.SourceTableID
and JT.Column3 = SJT.Column4
where
ST.SourceTableID = X
and JT.ColumnName3 = Y
Были некоторые разногласия по поводу перевода строки после select
, from
и where
. Назначение в строке выбора - разрешить другим операторам, таким как "top X", не изменять макет. Исходя из этого, простое поддержание согласованного перевода строки после ключевых элементов запроса, казалось, привело к хорошему уровню читабельности.
Бросив на новую строку после того, как from
и where
бы понятно пересмотр. Тем не менее, в таких запросах, как приведенное ниже update
, мы видим, что перевод строки после where
дает хорошее выравнивание столбцов. Точно так же, перевод строки после group by
order by
или по order by
делает наши макеты столбцов четкими и легкими для чтения.
update
TargetTable
set
ColumnName1 = @value,
ColumnName2 = @value2
where
Condition1 = @test
Наконец, insert
:
insert into TargetTable (
ColumnName1,
ColumnName2,
ColumnName3
) values (
@value1,
@value2,
@value3
)
По большей части они не отклоняются так далеко от способа, которым MS SQL Server Managements Studio/анализатор запросов выписывает SQL, однако они различаются.
Я с нетерпением жду встречи с тем, есть ли какой-либо консенсус в сообществе Qaru по этой теме. Я постоянно удивляюсь, как много разработчиков могут придерживаться стандартного форматирования для других языков и внезапно становятся настолько случайными при обращении к SQL.