通过使用 SQL,可以为表名称或列名称指定别名(Alias)。
别名的作用
- SQL 别名用于为表或表中的列提供临时名称。
- SQL 别名通常用于使列名更具可读性。
- SQL 一个别名只存在于查询期间。
使用别名的场景
在下列情况下使用别名是有用的:
- 查询涉及多个表
- 用于查询函数
- 需要把两个或更多的列放在一起
- 列名长或可读性差
列的别名语法
SELECT column_name AS alias_name
FROM table_name;
表的别名语法
SELECT column_name(s)
FROM table_name AS alias_name;
示例数据库
以下是"Customers" 表中的数据:
下面是选自 "Orders" 表的数据:
列的别名实例
以下SQL语句创建两个别名,一个用于客户ID列,另一个用于姓名列:
实例
SELECT 客户ID AS CustomerID, 姓名 AS Customer FROM Customers;
结果如下:
注:查询出来的列名会以别名的形式显示,不再显示原来的列名,但是物理表的列名还是没变,这样在不影响表结构的前提下,可以根据实际需要重命成自己想要的名称。
以下SQL语句创建两个别名,一个用于姓名列,一个用于城市列。
注:如果别名包含空格,则需要双引号或方括号:
实例
SELECT 姓名 AS Customer, 城市 AS [City Name] FROM Customers;
结果如下:
以下SQL语句创建一个名为“地址”的别名,它包含四列(姓名,省份,城市,地址和邮编):
SELECT 姓名, 省份 + 城市 + 地址 + ',邮编:' + 邮编 AS 地址 FROM Customers;
结果如下:
注:如果我们不使用AS,上面的地址列就会显示 (无列名)
注意:要使上面的SQL语句在MySQL中工作,请使用以下命令:
SELECT 姓名, CONCAT(地址, 省份, 城市, ',邮编:', 邮编 ) AS 地址 FROM Customers;
注:Mysql中的字符拼接需要使用CONCAT函数,不能直接使用+
表别名实例
以下SQL语句创建两个列别名,一个用于姓名列,一个用于订单日期列,同时创建两个表列名,分别用于Customers表和Orders表
SELECT c.姓名 AS Customer, o.订单日期 AS Orderdate FROM Customers AS c JOIN Orders AS o ON c.客户ID=o.客户ID
结果如下:
注:上面我们分别对表名和列名进行了重命名,需要注意的是ON和WHERE以及其他涉及条件筛选的地方,不能使用重命名后的名称,GROUP BY 也不行。此外在进行重命名时AS是可以省略的。
批注
AS别名在多表进行关联时可以很好的处理表名相同的情况,比如两个表都存在姓名列,可以将A表的姓名命名成A_NAME,B表的姓名命名成B_NAME,这样在阅读代码时候可以一目了然。此外AS一般只对查询的列和表以及ORDER BY重命名后的别名才有效,其他地方还是需要使用原始列名。