Skip to content

SQLite - ALIAS(别名)语法

别名(Aliases)为特定查询中的表或列提供一个临时的替代名称。它们对于编写可读、可维护的 SQL 至关重要,尤其是在涉及连接(joins)或聚合函数(aggregate functions)的复杂查询中。

列别名用于使查询输出更具可读性,或为派生列(例如,来自函数或计算的列)命名。

SELECT column_name AS alias_name
FROM table_name;

AS 关键字是可选的,但强烈建议使用它以提高清晰度。

使用我们的 EMPLOYEES 表,我们可以在结果集中为 first_name 和 last_name 列指定更具描述性的别名。

sqlite> SELECT first_name AS "First Name", last_name AS "Last Name", salary
...> FROM EMPLOYEES;

这个查询将产生“First Name”和“Last Name”作为标题,而不是“first_name”和“last_name”。

表别名主要用于缩短长表名以提高简洁性,以及在连接多个表时区分它们。

SELECT ...
FROM table_name AS alias_name
[JOIN another_table AS another_alias ON ...];

让我们回顾一下 EMPLOYEES 和 DEPARTMENTS 表。我们希望列出每位员工的全名及其部门名称。这需要一个 JOIN(连接)操作。

-- 示例数据
-- DEPARTMENTS(部门表):(1, '工程部'), (2, '财务部')
-- EMPLOYEES(员工表):(1, 'Alice', ..., 1), (2, 'Bob', ..., 2)

这是使用现代 JOIN 语法和表别名(e 代表 EMPLOYEES,d 代表 DEPARTMENTS)的查询,旨在提高简洁性和清晰度。

sqlite> SELECT
...> e.first_name,
...> e.last_name,
...> d.name AS department_name
...> FROM
...> EMPLOYEES AS e
...> JOIN
...> DEPARTMENTS AS d ON e.department_id = d.id;

这比旧的基于逗号的连接语法清晰得多。ON 子句明确指出了连接条件。别名 e 和 d 使指定每个列来自哪个表变得容易。

结果如下:

first_name last_name department_name
---------- ---------- ---------------
Alice Smith Engineering
Bob Johnson Finance
  • 使用 AS: 始终使用 AS 关键字来定义别名,以提高可读性。
  • 保持一致性: 为您的别名选择一致的命名方案(例如,表名的首字母)。
  • 用于自连接: 当表进行自连接(joining a table to itself)时,表别名是强制性的。
  • 首选显式 JOIN: 始终使用现代的 JOIN ... ON 语法,而不是旧的 FROM table1, table2 WHERE ... 语法。前者歧义更少,且不易出错。