Поделиться через


Зарезервированные слова и схемы

Область применения: флажок Databricks SQL флажок Databricks Runtime

Зарезервированные слова — это литералы, используемые в качестве ключевых слов в языке SQL. Их не следует использовать в качестве идентификаторов во избежание непредвиденного поведения.

Зарезервированные имена схем имеют особое значение для Azure Databricks.

Зарезервированные слова

Azure Databricks официально не запрещает использование определенных литералов в качестве идентификаторов.

Однако, чтобы использовать любой из приведенных ниже списков идентификаторов в качестве псевдонима таблицы, необходимо заключить имя в обратные кавычки (`).

  • ANTI
  • CROSS
  • ИСКЛЮЧЕНИЯ
  • FULL
  • INNER
  • INTERSECT
  • JOIN
  • LATERAL
  • LEFT
  • MINUS
  • NATURAL
  • DNS
  • RIGHT
  • SEMI
  • UNION
  • USING

Специальные слова в выражениях

Следующий список идентификаторов можно использовать в любом месте, но Azure Databricks обрабатывает их предпочтительно как ключевые слова в выражениях в определенных контекстах:

  • NULL

    Значение NULL в SQL.

  • DEFAULT

    Указывает столбец по умолчанию.

  • TRUE

    Логическое значение true в SQL.

  • FALSE

    Логическое значение false в SQL.

  • LATERAL

    Используется в качестве квалификатора столбцов для указания явной боковой корреляции.

Используйте обратные кавычки (NULL и DEFAULT) или дополните имена столбцов именем или псевдонимом таблицы.

Azure Databricks использует CURRENT_ префикс для ссылки на некоторые параметры конфигурации или другие переменные контекста. Префикс нижней панели (_) предназначен для псевдоколонок Azure Databricks. В Databricks Runtime существующий псевдоколонок является столбцом _metadata.

Идентификаторы с такими префиксами не обладают приоритетом. Однако не рекомендуется использовать эти префиксы для столбцов или псевдонимов столбцов во избежание непредвиденного поведения.

Зарезервированные имена каталогов

Azure Databricks резервирует следующий список имен каталогов для текущего или будущего использования:

  • Имена каталогов начинаются с SYS
  • Имена каталогов начинаются с DATABRICKS

Избегайте использования этих имен.

Зарезервированные имена схем

Azure Databricks резервирует следующий список имен схем для текущего или будущего использования:

  • BUILTIN

    Будет использоваться для квалификации встроенных функций.

  • SESSION

    Будет использоваться для квалификации временных представлений и функций.

  • INFORMATION_SCHEMA

    Содержит информационную схему SQL категории "Стандартный".

  • Имена схем, начиная с SYS или DATABRICKS

Избегайте использования этих имен.

Зарезервированные слова 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

  • N

    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

    ЗНАЧЕНИЯ

  • 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