MySQL中设置字段别名主要用AS关键字(可省略),用于提升查询结果可读性;别名可在ORDER BY、GROUP BY中使用,但不能在WHERE或ON中使用。

在 MySQL 中设置字段别名,主要是通过 AS 关键字(可省略)实现,用于让查询结果中的列显示更清晰、更易读,或适配程序处理逻辑。
基本语法:用 AS 显式定义别名
推荐使用 AS 关键字明确声明别名,提高 SQL 可读性:
- SELECT name AS 姓名, age AS 年龄 FROM users;
- AS 后面的别名可以是中文、英文、带空格的字符串(此时需用反引号或双引号包裹)
- 例如:SELECT COUNT(*) AS `总记录数` FROM orders;
省略 AS:直接跟别名(常见但需注意空格)
AS 是可选关键字,常被省略,但必须保证字段与别名之间有空格:
- SELECT name 姓名, age 年龄 FROM users; ✅ 有效
- SELECT name姓名 FROM users; ❌ 会被识别为字段名 “name姓名”,不是别名
- 若别名含空格、特殊符号或为保留字(如 order、group),必须加反引号:SELECT price AS `单价(元)` FROM products;
别名在 ORDER BY 和 GROUP BY 中的使用
字段别名可在 ORDER BY 和 GROUP BY 子句中直接使用(MySQL 支持),但不能在 WHERE 或 ON 中使用(因执行顺序早于 SELECT):
- SELECT user_id, COUNT(*) cnt FROM logs GROUP BY user_id ORDER BY cnt DESC;
- SELECT id, name FROM users WHERE name = '张三' ORDER BY name; —— 这里 name 是原始字段名,不是别名
- WHERE 中不能写 WHERE cnt > 10(cnt 是 SELECT 中定义的别名,WHERE 阶段还不可见)
注意事项与常见误区
别名只影响查询结果集的列名,不改变原表结构,也不影响索引或存储:
- 别名不会保存到数据库,每次查询需重新指定
- 在子查询中,外层查询只能引用内层 SELECT 定义的别名(作为列名),不能引用原始字段名(除非也暴露出来)
- 避免用 MySQL 保留字作别名,如 order、desc、user;若必须用,务必加反引号:SELECT name AS `user` FROM users;










