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


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

Область применения:флажок 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

    ГЛОБАЛЬНЫЙ, GRANT, ГРУППА, ГРУППИРОВКА

  • H

    HAVING

  • I

    В, ВНУТРЕННИЙ, INSERT, ПЕРЕСЕЧЕНИЕ, ИНТЕРВАЛ, В, ЯВЛЯЕТСЯ

  • J

    JOIN

  • L

    LEADING, LEFT, LIKE, LOCAL

  • N

    NATURAL, NO, NOT, NULL

  • O

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

  • P

    PARTITION, ПОЗИЦИЯ, ПЕРВИЧНАЯ

  • R

    RANGE, REFERENCES, REVOKE, RIGHT, ROLLBACK, ROLLUP, ROW, СТРОКА, СТРОКИ

  • S

    SELECT, SESSION_USER, SET, SOME, START

  • T

    TABLE, TABLESAMPLE, ЗАТЕМ, ВРЕМЯ, К, КОНЕЧНЫЙ, ИСТИНА, УСЕЧЕНИЕ

  • U

    UNION, UNIQUE, UNKNOWN, UPDATE, USER, USING

  • V

    VALUES

  • W

    КОГДА, WHERE, WINDOW, С

Примеры

-- 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