MySQL 列的选择与别名

🎉摘要:本文详细讲解SQL查询中如何通过选择特定列而非使用SELECT *来提升性能,如何使用别名提高查询结果的可读性,以及利用DISTINCT关键字去除重复数据。包含具体代码示例和最佳实践建议,帮助开发者编写更高效、可维护的SQL语句。

前一章节介绍了 SELECT 语句的基本结构,本章将介绍 SELECT 为特定列设置别名、去除重复值等技巧。

选择特定列

在前面已经介绍了选择特定列,语法如下:

-- 查询用户的姓名和邮箱
mysql> SELECT username, email FROM users;
+-------------+----------------------+
| username    | email                |
+-------------+----------------------+
| zhang_san   | zhangsan@example.com |
| li_si       | lisi@example.com     |
| wang_wu     | wangwu@example.com   |
| zhao_liu    | zhaoliu@example.com  |
| qian_qi     | qianqi@example.com   |
| sun_ba      | sunba@example.com    |
| zhou_jiu    | zhoujiu@example.com  |
| wu_shi      | wushi@example.com    |
| zheng_shiyi | zheng11@example.com  |
| chen_shier  | chen12@example.com   |
+-------------+----------------------+
10 rows in set (0.00 sec)

-- 查询用户ID和注册时间
mysql> SELECT user_id, created_at FROM users;
+---------+---------------------+
| user_id | created_at          |
+---------+---------------------+
|       1 | 2026-07-29 13:55:25 |
|       2 | 2026-07-29 13:55:25 |
|       3 | 2026-07-29 13:55:25 |
|       4 | 2026-07-29 13:55:25 |
|       5 | 2026-07-29 13:55:25 |
|       6 | 2026-07-29 13:55:25 |
|       7 | 2026-07-29 13:55:25 |
|       8 | 2026-07-29 13:55:25 |
|       9 | 2026-07-29 13:55:25 |
|      10 | 2026-07-29 13:55:25 |
+---------+---------------------+
10 rows in set (0.00 sec)

注意了,尽量避免使用 SELECT *,特别是在表有很多列或者查询数据量大的情况下。指定列名可以减少网络传输,提高查询效率。

使用别名

不知道是否还记得前面的“SELECT 'Hello MySQL'”语句,查询后,列名为“Hello MySQL”,如下:

mysql> SELECT 'Hello MySQL';
+-------------+
| Hello MySQL |
+-------------+
| Hello MySQL |
+-------------+
1 row in set (0.00 sec)

可是,我们并不想要这个列名,那么就使用 as 指定别名,语法如下:

-- 给列起别名
SELECT 
    username AS 用户名,
    email AS 邮箱地址,
    created_at AS 注册时间
FROM users;

-- AS可以省略
SELECT 
    username 用户名,
    email 邮箱地址
FROM users;

-- 别名中有空格或特殊字符时用引号
SELECT 
    username AS 'User Name',
    email AS 'Email Address'
FROM users;

注意,别名在查询结果中会作为列标题显示,在应用程序中可以通过别名获取字段值。

示例,为SELECT 'Hello MySQL'”指定别名,例如:

mysql> SELECT 'Hello MySQL' as 'value';
+-------------+
| value       |
+-------------+
| Hello MySQL |
+-------------+
1 row in set (0.00 sec)

上面语句指定别名为 value。

去除重复值(DISTINCT)

在 select 语句中使用 distinct 关键字可以去除查询数据中重复的数据行,语法如下:

-- 查询所有不同的性别
SELECT DISTINCT gender FROM users;

-- 查询不同的城市和性别组合
SELECT DISTINCT city, gender FROM users;

-- 统计有多少个不同的城市
SELECT COUNT(DISTINCT city) FROM users;

注意,DISTINCT 会对指定的列组合去重,所有列的值都相同才认为是重复。例如:

-- 没有去重
mysql> select created_at from users;
+---------------------+
| created_at          |
+---------------------+
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
| 2026-07-29 13:55:25 |
+---------------------+
10 rows in set (0.00 sec)

-- 去重后
mysql> select distinct created_at from users;
+---------------------+
| created_at          |
+---------------------+
| 2026-07-29 13:55:25 |
+---------------------+
1 row in set (0.00 sec)

提醒,数据库学习,看懂 ≠ 会写,眼睛一看明白,上手就报错,是绝大多数人的常态。所以看完后,还需要自己动手操作,后续将介绍 WEHRE 子句的用法。

  

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号