【问题标题】:Is it better to use column aliases with or without the keyword AS?使用带有或不带有关键字 AS 的列别名更好吗?
【发布时间】:2012-02-18 20:37:21
【问题描述】:

哪个最好?

Select TestColumn TC

Select TestColumn AS TC

我更喜欢第一个,但我不确定这是否是声明别名的现代方式。

【问题讨论】:

  • Aaron Bertrand's very recent blog post on the topic - 他主张在你的两个选项中使用SELECT SomeColumnName = .......
  • 立即使用 '=' 而不是 'AS' 并完全使您的 SQL 不可移植。它只能在 MS SQL Server 上运行。 Microsoft 会很高兴与您合作。
  • @JonathanLeffler - 你自己指出AS 也是不可移植的。每个平台都对 SQL 做出了自己的贡献,您将很难设计一个数据库并为其编写 SQL,从而无需修改即可在 SQL Server、Oracle、MySQL 和 PostgreSQL 之间完美移植。
  • @qes - 使用AS 表示表别名也是the SQL92 standard 的一部分。请参阅第 118-119 页的6.3 <table reference> 部分。

标签: sql sql-server select syntax


【解决方案1】:

这两者在大多数情况下是等价的。我更喜欢明确的 AS 表示法。

我使用 AS 表单的一个原因是,在我主要使用的 DBMS 中,它提供了一种保护措施,防止系统升级时出现新的关键字。那就是:

SELECT TestColumn KeyWord

在未来版本中,“KeyWord”成为关键字可能会导致问题,而在特定系统中,使用:

SELECT TestColumn AS KeyWord

仍然有效。

我最近了解到(被告知)Oracle 不支持表别名中的 AS。

FROM TableName T1     -- OK in Oracle
FROM TableName AS T1  -- Not OK in Oracle

如果这是准确的(我尚未验证),那么我认为这是一个错误。

不过,这是您的选择;这两个符号是等价的。

【讨论】:

  • +1 是的,Oracle 不允许 FROM TableName AS T1。鉴于他们没有声称 100% 的标准性能,我不同意您认为它应该被称为“错误”的观点 :-)
  • @JackDouglas:对我来说,这是一个假设性问题,因此是一个假设性错误(因为我无法亲身体验 Oracle)。但是,如果我需要使用 Oracle,它会激怒我。但是,根据需要进行调整。感谢您确认我记得被告知的内容!
【解决方案2】:

我更喜欢第二个(使用“AS”)。如果无论哪种方式都有效,只需使用您喜欢的并始终如一地使用它。

【讨论】:

    【解决方案3】:

    它不应该对你使用有任何影响,只要坚持下去。我个人更喜欢AS,感觉更具体。

    【讨论】:

      【解决方案4】:

      两者都应该工作。选择您喜欢的任何内容,或者您​​认为增加查询可读性的任何内容。我个人通常用“AS”作为别名,在我看来只是更具可读性。

      【讨论】:

        【解决方案5】:

        视情况而定。

        更具体地说,它取决于您工作环境的编码标准。无论个人喜好如何,您都可能必须调整自己的风格以符合您正在工作的小组或团队的编码标准。

        更重要的是,您的 SQL 与其周围的其他 SQL 具有相同的外观和感觉,以便在将代码移交给测试团队并最终交付给运维团队时对代码进行测试和调试。生产。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-09-24
          • 1970-01-01
          • 1970-01-01
          • 2021-09-07
          • 2012-05-31
          • 2020-12-29
          • 1970-01-01
          相关资源
          最近更新 更多