为什么要将我的SQL关键字大写?

时间:2009-03-03 21:09:18

标签: sql formatting readability

  

可能重复:
  Is there a good reason to use upper case for T-SQL keywords?

简单的问题。我个人发现一串小写字符比一串大写字符更易读。 SQL的一些旧的/流行的味道是区分大小写的吗?

供参考:

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

前者对我来说似乎更具可读性,但我更经常地看到后者。

16 个答案:

答案 0 :(得分:160)

我同意你的意见 - 对我来说,大写就是SHOUTING。

我让我的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;
    }
}              

唉!

无论如何,从投票中可以看出哪种风格更受欢迎,但我认为我们都同意这只是个人偏好。

答案 1 :(得分:103)

我认为后者更具可读性。您可以轻松地将关键字与表名和列名等区分开来。

答案 2 :(得分:55)

我要添加的一件事,我还没有看到任何人提出来:

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

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

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

答案 3 :(得分:42)

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

  

规则:

     

大写保留字。

     

理由:

     

大写单词被视为一个单元,   而不是被视为一系列的   音节或字母。眼睛被吸引了   对他们来说,他们采取行动宣布一个   声明或条款。这就是为什么   头条新闻和警示标志的工作。

     

排版员使用术语 bouma   一个字的形状。这个词出现了   在保罗·桑格的书中(1975年)。想像   长方形卡上的每个字母   只是适合它,所以你看到了   上升者,下降者和基线   作为各种“乐高积木”的字母   被啪啪啪啪地说出来。

     

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

我发现引人注目的是,这是唯一一本关于SQL启发式的书,由一位着名的SQL作者撰写。这是绝对真理吗?谁知道。这听起来很合理,我至少可以向团队成员指出规则并告诉他们遵循它(如果他们想责怪任何我给他们Celko的电子邮件地址:)

答案 4 :(得分:20)

主要是它的传统。我们希望将关键字和命名空间名称分开以便于阅读,因为在许多DBMS中,表和列名称区分大小写,我们不能将它们置于大写,因此我们将大写字母设为大写。

答案 5 :(得分:17)

代码中包含SQL语句缺少的标点符号。有点,括号和分号可以帮助您保持分离。代码也有行。尽管你可以在多个物理行上编写一个SQL语句,但它只是一个语句,一个“代码行”。

如果我在没有任何正常标点符号的情况下写英文文本,如果我将新条款的开头大写,那么更容易分辨出哪一个结束,而下一个开始另外一个文本块这么久就会更容易可能是非常难以阅读不是id表明它现在很容易阅读但至少你可以遵循它我认为

答案 6 :(得分:13)

我更喜欢小写字母关键字。 Management Studio对关键字进行颜色编码,因此将它们与标识符区分开来没有问题。

大写关键字感觉如此......好......基本......;)

- “从八十年代起,他们希望他们的大写关键词回归基本,COBOL和FORTRAN。” ;)

答案 7 :(得分:4)

我喜欢在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连接是另一个问题的问题。)

有一项心理学研究表明,由于单词的轮廓更加独特,小写的阅读速度比大写更快。但是,这种效果可以通过大量练习阅读大写来消失。

答案 8 :(得分:3)

早在80年代,我曾经将数据库名称大写,并将sql关键字保留为小写。大多数作者都做了相反的事情,将SQL关键字大写。最后,我开始和人群一起去。

顺便说一句,我要提到的是,在大多数已发布的C,C ++或Java代码片段中,语言关键字总是小写,大写关键字甚至可能都不被某些解析器识别。我没有看到在编程语言中使用SQL中相反约定的充分理由,即使SQL嵌入在源代码中也是如此。

我并不是要为数据库名称使用全部大写字母。它看起来有点像“大喊大叫”。还有更好的约定,比如在数据库名称中使用一些大写字母。 (“数据库名称”是指模式的名称,模式对象,如表格,也许还有其他一些东西。)仅仅因为我在80年代这样做并不意味着我今天必须为它辩护。

最后,“De gustibus non disputandum est”。

答案 9 :(得分:3)

更糟糕的是,由于我办公室的大多数开发人员都相信sql关键字的资本,所以我不得不改为大写。多数规则。

我相信小写更容易阅读,并且考虑到sql关键字无论如何都以蓝色突出显示。

在辉煌时代,由于我们在绿色屏幕上开发,因此关键词处于封闭状态!

问题是:如果我们不以大写形式编写c#关键字,那为什么我必须以大写形式编写sql关键字?

就像别人说过的那样 - 首都正在大肆宣传!

答案 10 :(得分:2)

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

是的,这个问题已经回答了: Is SQL syntax case sensitive?

答案 11 :(得分:2)

我更喜欢在SQL中使用大写字母来表示关键字。

是的小写更具可读性但是对于我来说,需要花费额外的时间来扫描查询,大多数情况下你会做得很好。一旦完成并经过测试,你很少会再次看到它(DAL,存储过程或任何会隐藏它的东西)。

如果您是第一次阅读它,大写的WHERE AND JOIN将按照您的意愿向您跳跃。

答案 12 :(得分:2)

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

答案 13 :(得分:1)

这里的一些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

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

答案 14 :(得分:0)

也许没有任何结果,但我更喜欢在small caps中排版SQL个关键字。这样他们看起来像大多数读者一样,但它们与丑陋的ALL CAPS风格不同。

另一个优点是我可以按原样保留代码并以传统方式打印。 (我使用listings中的LaTeX包来打印漂亮的代码。)

答案 15 :(得分:0)

我将SQL大写化,使其与宿主语言形成“对比”(现在主要是C#)。

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