2.3.2 列的别名
有时候某些表的字段名称太长,在查询的时候不方便,因此MySQL支持给列起一个别名,可以给列的名字太长的列起一个简短的别名,来增强查询的便捷性。
列的别名命名有3种方式:字段名后空格+别名、字段名后加 AS
和字段名后以 ""
把别名引起来。
1.方式一:空格
例如,给 employees
表的 employee_id
字段起别名叫 emp_id
; 给last_name
字段起别名叫 lname
;给department_id
字段起别名 dept_id
。
SELECT employee_id emp_id, last_name lname, department_id dept_id
FROM employees;
查询结果集:
2.方式二:AS
该关键字不是“作为,当做”的英语,而是英语 alias (别名) 的缩写。可以省略,省略后与方式一等价。
SELECT employee_id AS emp_id, last_name AS lname, department_id AS dept_id
FROM employees;
查询结果集:
3.方式三:双引号 “”
这种方式是用来解决别名中带空格的情况,例如我想给 salary * 12
起个别名叫 annual sal
,如下代码所示:
SELECT salary * 12 annual sal
FROM employees;
查询结果:报错
这是因为,MySQL把空格后的 annual
当成是别名了,而 sal
误以为是要查询到的字段。但显然 employees
中没有这个字段,因此查询结果就报错。
这种情况下,以双引号 ""
把别名引起来的方式就显示出优越性了。如下代码所示:
SELECT employee_id AS emp_id, last_name AS lname, department_id AS dept_id, salary * 12 "annual sal"
FROM employees;
查询结果:
【总结】
- 当给字段起的别名有空格、或者其他容易使MySQL产生歧义的别名,统统用方式三双引号的方式引起来。在MySQL规范中,尽量使用方式三给字段名起别名,且不要省略
AS
。 - 注意:列的别名不要使用单引号
''
。因为在严格遵守SQL语法的数据库系统 (如Oracle) 中,使用单引号''
会报错。在MySQL中没有报错,是因为MySQL是一款没有严格遵循SQL语法规范的DBMS (Database Manage System) 。为了在不同DBMS上的通用性,统一严格按照SQL语法规范使用双引号""
来起列的别名。