【问题标题】:What is the point using "AS" keyword in SQL when aliasing can be done without it?当别名可以在没有它的情况下完成时,在 SQL 中使用“AS”关键字有什么意义?
【发布时间】:2017-07-08 15:56:40
【问题描述】:
  1. 从Employee中选择salary*12作为“Annual Salary”;
  2. 从Employee中选择薪水*12“年薪”;

两个查询都会给出相同的结果,“AS”会有所不同吗?如果是,那是什么?如果不是,那使用它有什么意义呢?

【问题讨论】:

  • 根据 ANSI/ISO SQL,AS 关键字是可选的。但有些 dbms 产品想要它,而另一些则不想要它......
  • 还有alias=columnValue语法;即 select x=1, 2 as y, 3 z 在某些 DBMS 系统中使用。

标签: mysql sql sql-server oracle


【解决方案1】:

我认为原因很简单。考虑如下代码:

select a, b, c, d
. . .

偶尔跳过逗号很容易:

select a b, c, d

如果您不使用as,那么这看起来像是正确的代码,而且很难弄清楚。如果您总是使用as 作为列别名,那么您就知道这是不正确的。

【讨论】:

  • 很好地说明了跳过as 的问题。非常好!
  • 这是一个很好的观点,我在写答案时应该考虑一下。 +1。
  • 不完全是 OP 的问题,但是结合使用 AS 并将 select 的每一列放在一个新行上,并以逗号开头,可以很容易地快速识别何时发生这种情况
  • @AnthonyHancock。 . .除了行首的逗号,我基本同意。英语和大多数其他语言不以标点符号开头,所以看起来非常非常尴尬。
  • @GordonLinoff 我同意它可能看起来有点尴尬,但如果你曾经忘记了列之间的逗号并试图找出在哪里,那么只需在下面追踪一行就容易多了screen 而不是在试图找到它的每一行末尾来回编织。不过,每个人都有自己的细微语法差异。
【解决方案2】:
  1. 可读性。
    想象一下您的查询有 20、50 甚至 100 列。使用As 将帮助任何阅读查询的人了解什么是列以及什么是别名。
  2. 兼容性。
    如果您计划迁移到 RDBMS,则该 RDBMS 可能不支持简写别名。

另外,值得一提的是,一些 DBA 不喜欢使用 as 关键字 - 这里是 Aaron Bertrand's article about it。就我个人而言,我不同意这篇文章(尽管坏习惯系列中的其他帖子同样精彩,恕我直言)

【讨论】:

  • 我和 AB 一起做这个
  • 我支持 ZoharPeled 和 AaronBertrand 反对 SELECT expression alias - 太容易出错,比如缺少逗号。至于SELECT expression AS alias vs SELECT alias = expression,虽然我更喜欢后者,但我认为它是一个强调的问题:如果你想通过让它先出现来强调表达,使用AS,如果你想强调新字段名称,使用=。 // 在其他语言中,我可能会类似地说dest := sourcesource =: dest,或field OF record vs record.field(或不太常见的record 's field
  • +1 用于培养 Aaron Bertrand,尽管我不同意使用 = 而不是 as。不幸的是,= 在不同的数据库中意味着不同的东西。这不仅仅是“风格”的问题,而是实际语义差异的问题。
  • @GordonLinoff 非常正确,但文章确实非常小心地表达(在第一段中)这是 SQL 服务器特定的偏好,并且如果可移植代码是您的优先事项,那么该意见不适用.
【解决方案3】:

戈登展示了一个大问题。
as 关键字的含义在多个表 select 查询中很容易理解。例如,如果您使用基于同一张表的多个条件的查询。在这种情况下,as 允许使用易于阅读和故障安全的alias.Field 输出为表和整个子查询创建别名。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多