目录
- 参考源
- SQL 别名 ( AS )
- 示例数据
- 基本使用
- 列的别名
- 表的别名
- 说明
- 使用场景
SQL 别名 ( AS )
- SQL 中允许临时给表名或列名称指定别名,创建别名是为了让列名称的可读性更强
- 别名只是当前 SQL 语句执行过程中临时的改变,在数据库中实际的表的名称不会改变
- SQL 中创建别名使用
as
关键字 - 如果列名称包含空格,要求使用双引号或方括号
列的 SQL 别名
select column_name as alias_name from table_name;
表的别名
select column_name from table_name as alias_name;
示例数据
CREATE DATABASE IF NOT EXISTS hardy_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;
USE hardy_db;
DROP TABLE IF EXISTS lesson;
CREATE TABLE lesson_views (
id INT ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT,
name VARCHAR ( 32 ) DEFAULT '',
lession_id int(11) NOT NULL default 0,
views INT ( 11 ) NOT NULL DEFAULT 0,
created_at TIMESTAMP
);
INSERT INTO lesson_views ( id, name, views,lesson_id, created_at )
VALUES
( 1, 'Python3 基础教程', 981, 1, '2019-03-18 13:52:03' ),
( 2, 'JavaScript 基础教程', 73, 2, '2019-03-18 16:03:32' ),
( 3, 'Ruby 基础教程', 199, 3, '2019-04-01 06:16:14' ),
( 4, 'SQL 基础教程', 533, 1, '2019-05-02 08:13:42' ),
( 5, 'Linux 基础教程', 1000, 2, '2019-06-02 08:13:42' ),
( 6, 'Python3 基础教程', 981, 3, '2019-03-18 13:52:03' ),
( 7, 'JavaScript 基础教程', 73, 1, '2019-03-18 16:03:32' ),
( 8, 'Ruby 基础教程', 199, 2, '2019-04-01 06:16:14' ),
( 9, 'SQL 基础教程', 533, 3, '2019-05-02 08:13:42' ),
( 10, 'Linux 基础教程', 1000, 1, '2019-06-02 08:13:42' );
基本使用
- 下面的 SQL 语句为
name
和lesson_id
指定别名cname
和lid
select lesson_id as lid, name as cname, created_at, views from lesson_views;
运行结果如下:
mysql> select lesson_id as lid, name as cname, created_at, views from lesson_vi
ews;
+-----+---------------------+---------------------+-------+
| lid | cname | created_at | views |
+-----+---------------------+---------------------+-------+
| 1 | Python3 基础教程 | 2019-03-18 13:52:03 | 981 |
| 2 | JavaScript 基础教程 | 2019-03-18 16:03:32 | 73 |
| 3 | Ruby 基础教程 | 2019-04-01 06:16:14 | 199 |
| 1 | SQL 基础教程 | 2019-05-02 08:13:42 | 533 |
| 2 | Linux 基础教程 | 2019-06-02 08:13:42 | 1000 |
| 3 | Python3 基础教程 | 2019-03-18 13:52:03 | 981 |
| 1 | JavaScript 基础教程 | 2019-03-18 16:03:32 | 73 |
| 2 | Ruby 基础教程 | 2019-04-01 06:16:14 | 199 |
| 3 | SQL 基础教程 | 2019-05-02 08:13:42 | 533 |
| 1 | Linux 基础教程 | 2019-06-02 08:13:42 | 1000 |
+-----+---------------------+---------------------+-------+
10 rows in set (0.00 sec)
- 对于聚合函数等,我们也可以使用别名,例如下面的 SQL 语句为 sum(views) 指定别名 total_view
select name as cname, sum(views) as total_view from lesson_views group by name;
运行结果如下
mysql> select name as cname, sum(views) as total_view from lesson_views group by
name;
+---------------------+------------+
| cname | total_view |
+---------------------+------------+
| Python3 基础教程 | 1962 |
| JavaScript 基础教程 | 146 |
| Ruby 基础教程 | 398 |
| SQL 基础教程 | 1066 |
| Linux 基础教程 | 2000 |
+---------------------+------------+
5 rows in set (0.00 sec)
列的别名
- 下面的 SQL 语句为
name
和lesson_id
指定别名cname
和lid
select lesson_id as lid, name as cname, created_at, views from lesson_views;
运行结果如下:
mysql> select lesson_id as lid, name as cname, created_at, views from lesson_vi
ews;
+-----+---------------------+---------------------+-------+
| lid | cname | created_at | views |
+-----+---------------------+---------------------+-------+
| 1 | Python3 基础教程 | 2019-03-18 13:52:03 | 981 |
| 2 | JavaScript 基础教程 | 2019-03-18 16:03:32 | 73 |
| 3 | Ruby 基础教程 | 2019-04-01 06:16:14 | 199 |
| 1 | SQL 基础教程 | 2019-05-02 08:13:42 | 533 |
| 2 | Linux 基础教程 | 2019-06-02 08:13:42 | 1000 |
| 3 | Python3 基础教程 | 2019-03-18 13:52:03 | 981 |
| 1 | JavaScript 基础教程 | 2019-03-18 16:03:32 | 73 |
| 2 | Ruby 基础教程 | 2019-04-01 06:16:14 | 199 |
| 3 | SQL 基础教程 | 2019-05-02 08:13:42 | 533 |
| 1 | Linux 基础教程 | 2019-06-02 08:13:42 | 1000 |
+-----+---------------------+---------------------+-------+
10 rows in set (0.00 sec)
- 对于聚合函数等,我们也可以使用别名,例如下面的 SQL 语句为 sum(views) 指定别名 total_view
select name as cname, sum(views) as total_view from lesson_views group by name;
运行结果如下
mysql> select name as cname, sum(views) as total_view from lesson_views group by
name;
+---------------------+------------+
| cname | total_view |
+---------------------+------------+
| Python3 基础教程 | 1962 |
| JavaScript 基础教程 | 146 |
| Ruby 基础教程 | 398 |
| SQL 基础教程 | 1066 |
| Linux 基础教程 | 2000 |
+---------------------+------------+
5 rows in set (0.00 sec)
表的别名
AS
关键词还可以用于给 表名 取一个别名,例如下面的 SQL 语句为 lesson_views
取个别名lv
select * from lesson_views as lv where lv.lesson_id = 2;
运行结果如下
mysql> select * from lesson_views as lv where lv.lession_id = 2;
+----+---------------------+------------+-------+---------------------+
| id | name | lession_id | views | created_at |
+----+---------------------+------------+-------+---------------------+
| 2 | JavaScript 基础教程 | 2 | 73 | 2019-03-18 16:03:32 |
| 5 | Linux 基础教程 | 2 | 1000 | 2019-06-02 08:13:42 |
| 8 | Ruby 基础教程 | 2 | 199 | 2019-04-01 06:16:14 |
+----+---------------------+------------+-------+---------------------+
3 rows in set (0.00 sec)
说明
- 列别名可以在
group by
having
order by
中使用,不能在where
中使用 - 表别名可以在
where
中使用
使用场景
如果出现以下几种情况之一,使用别名很有用:
- 在查询中涉及超过一个表
- 在查询中使用了函数
- 列名称很长或者可读性差
- 需要把两个列或者多个列结合在一起