是,AS关键字在列别名和表别名中可省略,功能等效,但子查询、CTE及视图定义中AS不可省;省略后若别名含空格、保留字或特殊字符,须用反引号包裹,否则报错。
没有影响。省略 AS 不改变查询逻辑、执行计划或结果集内容,只影响语法书写形式。
AS?列别名和表别名在绝大多数主流数据库(MySQL、PostgreSQL、SQL Server、SQLite)中都支持省略 AS:
SELECT name nickname 和 SELECT name AS nickname 等效FROM users u 和 FROM users AS u 等效(SELECT id FROM logs) sub 和 (SELECT id FROM logs) AS sub 在 MySQL 中都合法AS?不是语法“不允许”,而是省略后会直接报错——本质是别名缺失,而非 AS 本身不可省:
AS 可省;写成 (SELECT ...) sub 没问题,(SELECT ...) 却一定报错WITH 子句)中 AS 是强制关键字:WITH active_users AS (SELECT ...),漏掉 AS 会解析失败AS 也是必需的:CREATE VIEW v AS SELECT ...
AS 容易踩的坑真正出问题的从来不是 AS 本身,而是省略后暴露的命名隐患:
SELECT price "total price" 看似省略了 AS,但双引号在 MySQL 里默认被当字符串字面量——结果返回固定值 "total price",不是字段计算值;正确写法是 SELECT price AS `total price`
order、group),不加 AS + 反引号就直接语法错误:SELECT status order 报错,必须写 SELECT status AS `order`
SELECT col alias,有人写 SELECT col AS alias,可读性下降,Code Review 时容易漏掉引号或冲突检查最常被忽略的不是“能不能省略”,而是“省略之后,那个别名还是不是合法标识符”。只要别名本身合规(无空格、无保留字、无特殊字符),省略 AS 就安全;一旦不合规,补上 AS 还得立刻加上引号——这时候 AS 只是让引号的存在更显眼而已。