目录

  • 参考源
  • SQL 别名 ( AS )
  • 示例数据
  • 基本使用
  • 列的别名
  • 表的别名
  • 说明
  • 使用场景


SQL 别名 ( AS )

  1. SQL 中允许临时给表名列名称指定别名,创建别名是为了让列名称的可读性更强
  2. 别名只是当前 SQL 语句执行过程中临时的改变,在数据库中实际的表的名称不会改变
  3. SQL 中创建别名使用 as 关键字
  4. 如果列名称包含空格,要求使用双引号或方括号

列的 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' );

基本使用

  1. 下面的 SQL 语句为 namelesson_id 指定别名 cnamelid
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)
  1. 对于聚合函数等,我们也可以使用别名,例如下面的 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)

列的别名

  1. 下面的 SQL 语句为 namelesson_id 指定别名 cnamelid
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)
  1. 对于聚合函数等,我们也可以使用别名,例如下面的 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中使用

使用场景

如果出现以下几种情况之一,使用别名很有用:

  • 在查询中涉及超过一个表
  • 在查询中使用了函数
  • 列名称很长或者可读性差
  • 需要把两个列或者多个列结合在一起