В моей последней работе мы работали над приложением, очень загруженным базой данных, и я разработал несколько стандартов форматирования, чтобы мы все писали 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
делает наши макеты столбцов четкими и легкими для чтения.
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, однако они do отличаются.
Я с нетерпением жду возможности увидеть консенсус в сообществе Stack Overflow по этой теме. Я постоянно удивляюсь, как много разработчиков могут придерживаться стандартного форматирования для других языков и внезапно становятся настолько случайными при обращении к SQL.