【发布时间】:2010-10-05 21:56:15
【问题描述】:
在我的上一份工作中,我们开发了一个非常依赖数据库的应用程序,并且我开发了一些格式标准,以便我们都可以使用通用布局编写 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 的方式相差不大,但是它们确实不同。
我期待看到 Stack Overflow 社区对此话题是否有任何共识。我一直很惊讶有多少开发人员可以遵循其他语言的标准格式,并且在使用 SQL 时突然变得如此随意。
【问题讨论】:
-
我倾向于将逗号放在列名和值之前。它使阅读更容易。
-
将逗号放在列名之前还可以更轻松地注释掉该行代码,而不必担心删除前一行的逗号。
-
@DaMartyr - 明白,我见过很多。但是我是否认为它只在注释掉列表中的第一行或最后一行时会有所不同,所以总体上没有太大区别?
-
不,你的想法没有错,但是当它是列表中的第一个或最后一个值时,除了添加评论之外,你还必须更改其他内容,而如果你开头有 ht 逗号,注释就足够了。
-
把逗号放在开头,把第一行注释掉的时候,是不是还要去掉第二个select值上的逗号?似乎您只是将问题从最后一个值转移到第一个值......
标签: sql sql-server formatting standards coding-style