保留字和架构

适用于:勾选“是” Databricks SQL 勾选“是” Databricks Runtime

保留字是 SQL 语言用作关键字的文本,不应将其用作标识符,以避免意外的行为。

保留的架构名称对 Azure Databricks 具有特殊意义。

保留字

Azure Databricks 未正式禁止将任何特定文本用作标识符

但是,若要将以下任何标识符列表用作表别名,必须使用反勾号 (`) 将名称包围起来。

  • ANTI
  • CROSS
  • EXCEPT
  • FULL
  • INNER
  • INTERSECT
  • JOIN
  • LATERAL
  • LEFT
  • MINUS
  • NATURAL
  • ON
  • RIGHT
  • SEMI
  • UNION
  • USING

表达式中的特殊字

以下标识符列表可在任意位置使用,但 Azure Databricks 优先将其视为特定上下文中表达式中的关键字:

  • NULL

    SQL NULL 值。

  • DEFAULT

    指示列默认值。

  • TRUE

    SQL 布尔 true 值。

  • FALSE

    SQL 布尔 false 值。

  • LATERAL

    用作列限定符以指示显式横向关联。

使用反勾号(NULLDEFAULT)或使用表名或别名限定列名。

Azure Databricks 使用 CURRENT_ 前缀来引用某些配置设置或其他上下文变量。 下划线 (_) 前缀用于 Azure Databricks 伪列。 在 Databricks Runtime 中,现有的伪列是 _metadata 列

不会优先处理带有这些前缀的标识符。 但是,请避免使用这些前缀的列或列别名,以避免意外的行为。

保留的目录名称

Azure Databricks 保留以下目录名称列表供当前或将来使用:

  • SYS 开头的目录名称
  • DATABRICKS 开头的目录名称

避免使用这些名称。

保留的架构名称

Azure Databricks 保留以下架构名称列表供当前或将来使用:

  • BUILTIN

    将来用于限定内置函数。

  • SESSION

    将来用于限定临时视图和函数。

  • INFORMATION_SCHEMA

    保存 SQL 标准信息架构

  • SYSDATABRICKS 开头的架构名称

避免使用这些名称。

ANSI 保留字

Azure Databricks 不强制使用 ANSI 保留字。 以下 SQL2016 关键字列表仅供参考。

  • 指向

    ALL、ALTER、AND、ANY、ARRAY、AS、AT、AUTHORIZATION

  • B

    BETWEEN、BOTH、BY

  • C

    CASE、CAST、CHECK、COLLATE、COLUMN、COMMIT、CONSTRAINT、CREATE、CROSS、CUBE、CURRENT、CURRENT_DATE、CURRENT_TIME、CURRENT_TIMESTAMP、CURRENT_USER

  • D

    DELETE、DESCRIBE、DISTINCT、DROP

  • E

    ELSE、END、ESCAPE、EXCEPT、EXISTS、EXTERNAL、EXTRACT

  • F

    FALSE、FETCH、FILTER、FOR、FOREIGN、FROM、FULL、FUNCTION

  • G

    GLOBAL、GRANT、GROUP、GROUPING

  • H

    HAVING

  • I

    IN、INNER、INSERT、INTERSECT、INTERVAL、INTO、IS

  • J

    JOIN

  • L

    LEADING、LEFT、LIKE、LOCAL

  • NATURAL、NO、NOT、NULL

  • O

    OF、ON、ONLY、OR、ORDER、OUT、OUTER、OVERLAPS

  • P

    PARTITION、POSITION、PRIMARY

  • R

    RANGE、REFERENCES、REVOKE、RIGHT、ROLLBACK、ROLLUP、ROW、ROWS

  • S

    SELECT、SESSION_USER、SET、SOME、START

  • T

    TABLE、TABLESAMPLE、THEN、TIME、TO、TRAILING、TRUE、TRUNCATE

  • U

    UNION、UNIQUE、UNKNOWN、UPDATE、USER、USING

  • V

    VALUES

  • W

    WHEN、WHERE、WINDOW、WITH

示例

-- Using SQL keywords
> CREATE TEMPORARY VIEW where(where) AS (VALUES (1));

> SELECT where from FROM where select;
  1

-- Usage of NULL
> SELECT NULL, `null`, T.null FROM VALUES(1) AS T(null);
 NULL   1       1

-- current_date is eclipsed by the column alias T.current_date
> SELECT (SELECT current_date), current_date, current_date()
    FROM VALUES(1) AS T(current_date);
 2021-10-23     1       2021-10-23

-- Reserved keyword ANTI cannot be used as table alias
> SELECT * FROM VALUES(1) AS ANTI;
Error in query: no viable alternative at input 'ANTI'

> SELECT * FROM VALUES(1) AS `ANTI`;
  1