MySQL 别名
在本文中,我们讨论了 MySQL 中的列别名,表别名和派生表别名,以及使用别名来简化 SQL 和提高 SQL 的可读性
。
如果在一个 SQL 中涉及到多个表,我们需要使用 table_name.column_name 这样的方式来引用每个表的字段,这有时候会让 SQL 变的臃肿和难以阅读。而使用别名,则可以简化 SQL 和提高 SQL 的可读性。
列别名
很多时候,一个表的列名的可读性并不好而且难理解。而使用列别名,则可以自定义输出列的名称。
列别名语法
以下展示了列别名的使用方法:
SELECT column_name AS `alias`
FROM table_name;
列别名使用说明:
【AS 】
关键字后面跟的是列的别名alias
- AS 关键字是可选的。
- 除了为字段指定别名,还可以为表达式指定别名。例如: SELECT NOW()
Current Time
FROM dual
列别名实例
在以下实例中,我们使用 Sakila 示例数据库中的 actor 表进行演示。
未指定别名查询数据
SELECT
first_name,
last_name,
CONCAT(last_name, ', ', first_name)
FROM
actor
LIMIT 5;
这样的列名可读性很差并很难理解。
指定别名查询数据
SELECT first_name '名字',
last_name '姓',
CONCAT(last_name, first_name) '全名'
FROM actor
LIMIT 5;
在本例中,我们为以下列指定了别名:
- 指定 first_name 列的别名为
名字
。 - 指定 last_name 列的别名为
姓
。 - 指定 CONCAT(last_name, ', ', first_name) 表达式的别名为
全名
。
从输出的结果来看,指定别名后,输出数据的可读性更高。因为大多数人不懂 CONCAT(first_name, ', ', last_name)
的具体含义。
表别名
除了为列指定别名,我们还可以为表指定别名,如下:
table_name AS alias
其中 AS
关键字是可选的,因此您可以省略它
。
SELECT *
FROM language
WHERE EXISTS(
SELECT *
FROM film
WHERE film.language_id = language.language_id
);
上面的例子中,没有使用表别名,我们使用 film.language_id 和 language.language_id 分别引用 film 和 language 的 language_id 字段。
现在我们使用别名改造这个 SQL,如下:
SELECT *
FROM language l
WHERE EXISTS(
SELECT *
FROM film f
WHERE f.language_id = l.language_id
);
结论
- 可以通过 AS 关键字指定别名,但是
【AS】
关键字是可选的。 - 当别名中包含空格时,必须使用 【`】 将别名引起来。
- 除了为字段指定别名,
表达式
也可以指定别名。 - 当 SQL 中涉及多个表时,使用表别名很重要。
⬅ Mysql基础教程(14):UNION