在 SQLite 中,别名(alias) 用于临时重命名表或列,便于查询时简化书写或避免冲突。别名分为 列别名 和 表别名 两种。
1. 列别名(Column Alias)
用于给查询结果中的列起一个新名字。
语法:
SELECT 列名 AS 别名 FROM 表名;
-- 或(AS 可省略)
SELECT 列名 别名 FROM 表名;
示例:
SELECT name AS n, age + 1 AS next_year FROM users;
结果:
| n | next_year |
|---|---|
| Alice | 26 |
注意:别名包含空格或特殊字符时需用双引号、单引号或方括号包围(取决于 SQLite 版本):
SELECT name AS "Full Name" FROM users;
2. 表别名(Table Alias)
用于给表起一个短名,特别是在多表联接(JOIN)时非常有用。
语法:
SELECT t.列名 FROM 表名 AS t;
-- 或
SELECT t.列名 FROM 表名 t;
示例(自连接):
SELECT a.name AS employee, b.name AS manager
FROM employees a
JOIN employees b ON a.manager_id = b.id;
3. 别名规则与注意事项
| 项目 | 说明 |
|---|---|
| 大小写敏感 | 别名默认不区分大小写(除非用引号包裹) |
| 作用域 | 仅在当前查询有效 |
| 不能用于 WHERE 子句的列别名 | 因为 WHERE 在 SELECT 之前执行 错误: WHERE age + 1 > 30正确: HAVING age + 1 > 30 或重复表达式 |
| 可用于 ORDER BY | 支持用别名排序:ORDER BY next_year |
4. 实际应用场景
-- 复杂计算结果重命名
SELECT
price * quantity AS total,
total * 0.9 AS discounted
FROM orders;
-- 多表连接简化书写
SELECT c.name, o.order_date
FROM customers AS c
JOIN orders AS o ON c.id = o.customer_id;
总结:
列别名 → 美化输出、简化表达式
表别名 → 提高多表查询可读性
如需生成测试数据或练习 SQL,告诉我!