黑马程序员技术交流社区

标题: 数据库查询 [打印本页]

作者: 郭正续    时间: 2012-10-17 12:56
标题: 数据库查询
昨天晚上我在查询时,突然发现一个问题,就是查询后给查询的列起名字,我习惯用as,比如
select COUNT(*) as 人数 from T_Grade group by 课程编号
结果发现把as去掉居然没报错,汗,SQL也这么不严谨么?求高手指点
作者: 管真    时间: 2012-10-17 13:27
一样的,两种都可以,个人感觉比较喜欢用as,这样读起来更通顺,符合英语的语法,哈哈
作者: 刘俊红    时间: 2012-10-17 14:16
SQL Server 2008 文档:AS 子句可用来更改结果集列的名称或为派生列分配名称。

加AS  是 ISO 标准SQL的语法。
不加AS是微软SQL Server的方言Transact-SQL 的语法,但是T-SQl是兼容ISO-SQL的,所以在有原名的地方加不加都行啊。

如果没有原名,比如表示的是一个子查询的结果集,那么用AS给取一个名字!
作者: 颜晋南    时间: 2012-10-18 21:22
AS 子句可用来更改结果集列的名称或为派生列分配名称。

如果结果集列是通过对表或视图中某一列的引用所定义的,则该结果集列的名称与被引用列的名称相同。AS 子句可用来为结果集列分配不同的名称或别名。这样做可以增加可读性。例如:

USE AdventureWorks;
GO
SELECT EmployeeID AS "Employee Identification Number"
FROM HumanResources.Employee;

在选择列表中,有些列进行了具体指定,而不是指定为对列的简单引用,这些列便是派生列。除非使用 AS 子句分配了名称,否则派生列没有名称。在以下示例中,如果删除 AS 子句,则使用 DATEDIFF 函数指定的派生列将会没有名称:

SELECT SalesOrderID,
       DATEDIFF(dd, ShipDate, GETDATE() ) AS DaysSinceShipped
FROM AdventureWorks.Sales.SalesOrderHeader
WHERE ShipDate IS NOT NULL

AS 子句是在 ISO 标准中定义的语法,用来为结果集列分配名称。下面是要在 Microsoft SQL Server 2005 中使用的首选语法。

column_name AS column_alias

result_column_expression AS derived_column_name

为了与 SQL Server 的早期版本兼容,Transact-SQL 还支持以下语法:
column_alias = column_name

derived_column_name = result_column_expression

例如,上一个示例可用下列代码替换:

SELECT SalesOrderID,
       DaysSinceShipped = DATEDIFF(dd, ShipDate, GETDATE() )
FROM AdventureWorks.Sales.SalesOrderHeader
WHERE ShipDate IS NOT NULL




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2