1. 裸列标签(Bare column label)
    可以省略 AS 直接使用:

SELECT foo bar FROM t; – bar 是裸列标签
限制:只有部分关键字可以这样用,因为如果太多关键字都能省略 AS,会导致语法歧义。

  1. 列标签(Column label)
    必须用 AS 明确指定:

SELECT foo AS “order” FROM t; – “order” 是列标签
更宽松:所有关键字都可以用,但必须显式写 AS(有时还需要双引号)。

为什么要区分?
🎯 避免语法歧义
如果所有关键字都能省略 AS,解析器会遇到困难:

– 假设 order 可以裸用:
SELECT foo order FROM t;
– 解析器会困惑:这是 “foo 别名为 order” 还是 “foo 然后 ORDER BY 开始了”?
通过区分:

裸列标签:只能是无歧义的关键字(通常是保留字之外的)
列标签:所有关键字都行,但必须用 AS 明确告诉解析器"这是别名"
🎯 兼容性与灵活性
允许常用标识符简洁书写(裸用)
同时保留用关键字作别名的能力(加 AS)
让 SQL 既简洁又不会模棱两可
简单说:裸列标签是"快速通道",但只有安全的词能走;列标签是"标准通道",所有词都能走但需要 AS 这张票。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐