Why should I capitalize my SQL keywords? Is there a good reason?

Possible Duplicate:
Is there a good reason to use upper case for T-SQL keywords?

I personally find a string of lowercase characters to be more readable than a string of uppercase characters. Is some old/popular flavor of SQL case-sensitive or something?

For reference:

select
this.Column1,
case when this.Column2 is null then 0 else this.Column2 end
from dbo.SomeTable this
inner join dbo.AnotherTable another on this.id = another.id
where
this.Price > 100

vs.

SELECT
this.Column1,
CASE WHEN this.Column2 IS NULL THEN 0 ELSE this.Column2 END
FROM dbo.SomeTable this
INNER JOIN dbo.AnotherTable another ON this.id = another.id
WHERE
this.Price > 100

The former just seems so much more readable to me, but I see the latter way more often.

78572 次浏览

我认为后者更具可读性,你可以很容易地将关键字从表名和列名等分离出来。

主要是传统。为了便于阅读,我们喜欢将关键字和名称空间名称分开,因为在许多 DBMS 中表和列名称是大小写敏感的,所以我们不能将它们大写,所以我们将关键字大写。

这只是一个可读性问题,可以帮助您快速区分 SQL 关键字。

顺便说一句,这个问题已经有答案了: SQL 语法区分大小写吗?

我更喜欢在 SQL 中对关键字使用大写。

是的,小写字母更具可读性,但是对于我来说,多花一秒钟浏览查询在大多数情况下都会对你有好处。一旦它完成和测试,你应该很少再看到它无论如何(DAL存储过程或任何将隐藏它向你)。

如果您是第一次阅读它,大写的 WHERE 和 JOIN 将跳到您的权利,因为他们应该。

我同意你的说法——对我来说,大写就是“大喊”。

我让 IDE 处理通过语法突显突出关键字。

我不知道它的历史原因,但现在它只是一个主观的偏好。

编辑以进一步阐明我的理由:

你会用其他现代语言将关键词大写吗? 举个例子:

USING (EditForm form = NEW EditForm()) {
IF (form.ShowDialog() == DialogResult.OK) {
IF ( form.EditedThing == null ) {
THROW NEW Exception("No thing!");
}
RETURN form.EditedThing;
} ELSE {
RETURN null;
}
}

啊!

无论如何,从投票结果来看,很明显哪种风格更受欢迎,但我想我们都同意,这只是个人偏好。

我更喜欢小写的关键字。 SQLServerManagementStudio颜色编码的关键字,所以没有问题区分他们从标识符。

大写的关键字感觉如此... ... 好吧... ... 简单... ... ;)

“ BASIC、 COBOL 和 FORTRAN 从80年代打来电话,他们想要回他们的大写关键字。”;)

也许没什么特别的,但是我更喜欢在 小型帽子中排版 SQL关键字。这样,对于大多数读者来说,它们看起来是大写的,但是它们和丑陋的大写字母风格不一样。

另一个好处是,我可以让代码保持原样,并以传统的样式打印它。(我使用 LaTeX中的 listings包来打印漂亮的代码。)

我喜欢在 SQL 关键字上使用大写。我认为我的思维跳过了它们,因为它们实在是块状的,并且集中在重要的事情上。当你像这样布局时,块状的单词将重要的部分分开:

SELECT
s.name,
m.eyes,
m.foo
FROM
muppets m,
muppet_shows ms,
shows s
WHERE
m.name = 'Gonzo' AND
m.muppetId = ms.muppetId AND
ms.showId = s.showId

(缺少 ANSI 的加入是另一个问题。)

有一项心理学研究表明,由于单词的轮廓更加与众不同,小写字母比大写字母读起来更快。然而,随着大量阅读大写字母的练习,这种效应会消失。

这只是一个可读性的问题,对 SQL 关键字使用大写有助于使脚本更容易理解。

代码具有 SQL 语句所缺少的标点符号。有点、括号和分号可以帮助你把事情分开。代码也有行。尽管您可以在多个物理行上编写 SQL 语句,但它只是一个语句,一行“代码”

如果我写的英文文本没有任何正常的标点符号,它可能会更容易,如果我把新的从句的开头大写,这样就更容易告诉哪里结束,下一个开头,否则一块文本这么长可能很难阅读不是我建议它现在很容易阅读,但至少你可以遵循它,我认为

早在20世纪80年代,我就习惯于将数据库名称大写,并将 SQL 关键字保留为小写。大多数编写者的做法相反,将 SQL 关键字大写。最后,我开始随波逐流。

顺便提一下,在 C、 C + + 或 Java 中发布的大多数代码片段中,语言关键字总是小写,而大写关键字可能甚至不会被某些解析器识别出来。我认为没有理由在 SQL 中使用与编程语言中使用的相反的约定,即使 SQL 是嵌入在源代码中的。

我不是在为数据库名称使用全大写辩护。实际上看起来有点像“大喊大叫”。还有更好的约定,比如在数据库名称中使用几个大写字母。(我所说的“数据库名称”是指模式的名称、类似于表的模式对象以及其他一些东西。)虽然我在80年代做到了,但并不意味着我今天就要为它辩护。

最后,“德古斯提布斯无可争议的是”。

摘自 Joe Celko 的“ SQL 编程风格”(ISBN 978-0120887972) :

规则:

保留词大写。

理由:

大写单词被视为一个单位, 而不是被解读为一系列 音节或字母。眼睛被吸引 他们就行动起来宣布 声明或条款。这就是为什么 新闻标题和警告标志起作用。

字体设计师使用术语 Bouma表示 一个词的形状。这个词出现了 在保罗 · 桑格的书中(1975)。想象一下 长方形卡片上的每个字母 刚好合适,这样你就能看到 上升,下降,和基线 作为各种“乐高积木”的字母 拼在一起组成一个词。

大写单词的 Bouma是 总是一个简单的,密集的矩形,和 很容易从一个领域中挑选出 小写字母。

我觉得引人注目的是,这是唯一一本关于 SQL 启发式的书,作者是著名的 SQL 作品作者。这就是真相吗?谁知道呢。这听起来很合理,我至少可以向团队成员指出这个规则,并告诉他们要遵守(如果他们想责备任何人,我会给他们 Celko 的电子邮件地址:)

更糟糕的是,由于我办公室的大多数开发人员都相信大写是 SQL 关键字,所以我不得不改为大写。少数服从多数。

我相信小写字母更容易阅读,而且因为 SQL 关键字总是以蓝色突出显示。

在那个辉煌的时代,关键词是用大写字母表示的,因为我们是在绿色屏幕上发展的!

问题是: 如果我们不用大写写 C # 关键字,那么为什么我要用大写写 SQL 关键字呢?

就像有人说的——首都在大喊大叫!

这里的一些 SQL 开发人员喜欢这样布局:

SELECT s.name, m.eyes, m.foo
FROM muppets m, muppet_shows ms, shows s
WHERE m.name = 'Gonzo' AND m.muppetId = ms.muppetId AND ms.showId = s.showId

他们声称这个更容易阅读,不像你的每行一个字段的方法,我使用我自己。

我还要补充一点,我还没有看到任何人提起过:

如果您在一种编程语言中使用 ad hoc SQL,那么字符串中将包含大量 SQL。例如:

insertStatement = "INSERT INTO Customers (FirstName, LastName) VALUES ('Jane','Smith')"

在这种情况下,语法着色可能不起作用,因此大写可能有助于提高可读性。

我将 SQL 大写化,使其与宿主语言(现在大多是 C #)更加“对立”。

这只是一个偏好和/或传统的问题,真的..。