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

Sam*_*ham 108 sql formatting readability

可能重复:
是否有充分的理由对T-SQL关键字使用大写?

简单的问题.我个人发现一串小写字符比一串大写字符更易读.是一些旧的/流行的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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

前者对我来说似乎更具可读性,但我更经常地看到后一种方式.

Blo*_*ard 168

我同意你的意见 - 对我来说,大写就是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;
    }
}              
Run Code Online (Sandbox Code Playgroud)

啊!

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

  • 认真.这个例子可能是必要的,但它有点粗糙. (41认同)
  • 我认为这是一个COBOL的事情 - 一般资本化的人超过40,并且只编写了COBOL和SQL. (11认同)
  • 不同的语言适合不同的样式约定. (7认同)
  • 这是SQL*为什么需要大写关键字的一个很好的例子:因为它在大多数语法提示中使用这些关键字.尝试用单词替换所有标点符号,将其全部小写,然后看看语法用眼睛解析有多困难. (7认同)
  • 这是为什么不这样做的一个很好的例子.看着这确实让我感到畏缩,虽然我通常用大写的SQL关键字.SQL和C#之间的一个不同之处在于,C#有一个非常好的结构,它带有大括号和标准缩进,而SQL则没有.在没有这种结构的情况下,大写字母可能会提供某种形式的视觉信息. (2认同)
  • 您刚刚说服我将 SQL 改用大写字母。你写的代码看起来非常好——我很惊讶你说“呃!” 作为一名前 C 程序员,这让我回到了 MACROS 的强大时代。 (2认同)

Tre*_*ent 108

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

  • 我"不确定,如果它更可读:) (158认同)
  • BILLY MAYS在这里,为您带来结构化的查询语言! (73认同)
  • 也许这只是习惯,但我发现第二个版本更容易理解. (7认同)
  • @Learning`The fantastic.words是你的STAND OUT as_compared_to少数和经常_模式/重复的SQL WORDS`换句话说,UPPERCASE约定的兴趣是SQL不可变关键字很容易识别,看起来与你自己的标识符分开/不同和直接的价值观.这当然有点重要,现在SQL IDE /编辑器中无处不在的语法hi-lighting.这说,虽然这个约定对于DML/DDL(如SELECT/INSERT查询等)来说是一件好事,但它可以像在存储过程中那样对SQL的过程扩展进行重视. (6认同)
  • 我认为有趣的是,当它处于大写时,SO不会执行相同的代码突出显示. (3认同)
  • 我认为这是一个COBOL的事情 - 一般资本化的人超过40,并且只编写了COBOL和SQL. (3认同)

Use*_*ser 60

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

如果您在编程语言中使用ad hoc SQL,那么在字符串中会有很多SQL.例如:

insertStatement = "INSERT INTO Customers (FirstName, LastName) VALUES ('Jane','Smith')"
Run Code Online (Sandbox Code Playgroud)

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

  • FWIW IntelliJ(可能和朋友)有语言注入和语法颜色(等)代码中的SQL字符串(以及其他嵌入式语言 - 似乎他们在一个文件中采用html/css/js的概念并将其概括) (2认同)
  • 此恕我直言是使用所有大写字母关键字的唯一有效理由(除了个人偏好). (2认同)
  • 同样,这里有2个选项:1)没有适当缩进的小型即席查询(IMO,这是错误的),它仍然不需要任何大小写; 2)使用语法高亮显示在您选择的IDE中预先编写的长多行查询. (2认同)

one*_*hen 42

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

规则:

大写保留字.

理由:

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

排版师使用术语bouma作为单词的形状.该术语出现在保罗·桑格的书中(1975年).想象一下矩形卡上的每个字母都适合它,这样你就可以看到ascenders,descenders和基线字母作为各种"乐高积木"拼接在一起形成一个单词.

大写单词的bouma总是一个简单,密集的矩形,很容易从小写单词的字段中挑选出来.

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

  • 是的,但您可以将相同的想法应用于编程语言,想象一个这样的 js 函数:`LET echoMessage = FUNCTION(msg){ ALERT(msg); }` (2认同)
  • 从现在开始,我将全部用大写的JS编写,并制作一个Babel插件对其进行转换。谢谢。 (2认同)

Pau*_*lin 20

这大多是传统.我们喜欢将关键字和命名空间名称分开以便于阅读,因为在许多DBMS中,表和列名称区分大小写,所以我们不能将它们作为大写,因此我们将关键字置于大写.

  • *MANY*DBMS使用区分大小写的表和列名称?我从来没有遇到任何问题(但是我90%的经验是MSSQL和Oracle) (3认同)
  • MSSQL服务器或数据库*可以设置为区分大小写的排序规则.是的,它非常烦人.但某些应用程序需要. (2认同)

Ins*_*ter 17

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

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

  • Sql语句不是单行代码.它更像是程序语言中的过程,而不是语句. (2认同)
  • ruby、haskell 和 python 有多少标点符号? (2认同)

Guf*_*ffa 13

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

大写的关键字感觉如此......好...... BASIC ......;)

- "从八十年代起,他们想要他们的大写关键词回归基本,COBOL和FORTRAN." ;)

  • 为什么选择downvote?如果你不解释你认为错的是什么,它就无法改善答案. (2认同)

小智 6

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

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

在辉煌的日子里,关键字是大写的,因为我们是在绿屏上开发的!

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

就像其他人所说的 - 首都在呼喊!


WW.*_*WW. 5

我喜欢对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
Run Code Online (Sandbox Code Playgroud)

(缺少ANSI连接是另一个问题。)

一项心理学研究表明,由于单词的轮廓更加鲜明,小写字母比大写字母更容易阅读。但是,通过阅读大写字母的大量练习,此效果可能会消失。