上述两个陈述之间没有区别。 AS只是提到别名的更明确的方式

在我之前回答的每个人都是正确的。 当您有长连接的查询或查询时,使用它作为表的别名快捷方式名称。 这里有几个例子。

例1

SELECT P.ProductName, P.ProductGroup, P.ProductRetailPrice FROM Products AS P

例2

SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products AS P LEFT OUTER JOIN Orders AS O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456

示例3使用AS关键字是一个很好的习惯,而且非常推荐,但是可以在没有一个的情况下执行相同的查询(我经常这样做)。

SELECT P.ProductName, P.ProductRetailPrice, O.Quantity FROM Products P LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456

正如你所看到的,我在最后一个例子中忽略了AS关键字。 它可以用作别名。

例4

SELECT P.ProductName AS "Product", P.ProductRetailPrice AS "Retail Price", O.Quantity AS "Quantity Ordered" FROM Products P LEFT OUTER JOIN Orders O ON O.ProductID = P.ProductID WHERE O.OrderID = 123456

例4的输出

Product Retail Price Quantity Ordered Blue Raspberry Gum $10 pk/$50 Case 2 Cases Twizzler $5 pk/$25 Case 10 Cases

当你不确定要select哪种语法时,尤其是当看起来没有太多分离select时,请参阅一本关于启发式的书。 据我所知,SQL的唯一启发式手册是“Joe Celko的SQL编程风格”:

相关名称通常被称为别名,但我将是正式的。 在SQL-92中,他们可以有一个可选的AS操作符,它应该用来清楚地说明某个东西正在被赋予一个新的名字。 [P16]

这样,如果你的团队不喜欢这个惯例,你可以责怪Celko–我知道我是这么做的;)

更新1:IIRC很长一段时间,Oracle不支持AS (之前的相关名)关键字,这也许可以解释为什么一些老的定时器不习惯使用它。

更新2:尽pipeSQL标准使用了“相关名称”这个术语,但这是不合适的。 其基本概念是“ 范围variables ”。

更新3:我只是重新阅读什么Celko写道,他是错的:表没有被重命名! 我现在想:

相关名称通常被称为别名,但我将是正式的。 在标准SQL中,它们可以有一个可选的AS关键字,但不应该使用它,因为它可能会给人一种印象,那就是某些东西没有被重命名。 实际上,应该省略它来强制它是一个范围variables。

AS关键字是为您的数据库表或表列指定一个ALIAS名称。 在你的例子中,两个语句都是正确的,但是有AS语句需要的情况(尽pipeAS操作符本身是可选的),例如

SELECT salary * 2 AS "Double salary" FROM employee;

在这种情况下, Employee表有一个salary栏,我们只是想用新名称Double Salary 。

对不起,如果我的解释是无效的。

根据你的评论更新 ,你是对的,我以前的发言是无效的。 我能想到的唯一原因是AS子句在SQL世界中已经存在了很长时间,它已经被合并到当今用于向后兼容的RDMS中。

如果你不使用'SELECT *'(这是一个坏习惯,你应该离开),这个用法更加明显:

SELECT t1.colA, t2.colB, t3.colC FROM alongtablename AS t1, anotherlongtablename AS t2, yetanotherlongtablename AS t3 WHERE t1.colD = t2.colE...

这是一种为实体指定关联名称的正式方式,以便您可以在查询的另一部分轻松解决它。

在这种情况下, AS是ANSI SQL 92中定义的一个可选关键字,用于定义一个< (通常称为表的别名) 。

对于表别名来说,最好不要使用AS关键字,因为它不被许多常用的数据库所支持。

如果您使用SQL Server 2012中的查询编辑器devise查询,例如,您将得到:

SELECT e.EmployeeID, s.CompanyName, o.ShipName FROM Employees AS e INNER JOIN Orders AS o ON e.EmployeeID = o.EmployeeID INNER JOIN Shippers AS s ON o.ShipVia = s.ShipperID WHERE (s.CompanyName = 'Federal Shipping')

但是,删除AS没有任何区别,如下所示:

SELECT e.EmployeeID, s.CompanyName, o.ShipName FROM Employees e INNER JOIN Orders o ON e.EmployeeID = o.EmployeeID INNER JOIN Shippers s ON o.ShipVia = s.ShipperID WHERE (s.CompanyName = 'Federal Shipping')

在这种情况下,使用AS是多余的,但在许多其他地方是必要的。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐