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

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

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

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

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

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

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

  • АНТИ
  • КРЕСТ
  • КРОМЕ
  • ПОЛНЫЙ
  • ВНУТРЕННИЙ
  • ПЕРЕСЕКАЮТСЯ
  • Присоединиться к
  • БОКОВОЙ
  • ЛЕВОЙ
  • МИНУС
  • ПРИРОДНЫХ
  • НА
  • ПРАВИЛЬНО
  • ПОЛУ
  • СОЮЗА
  • ИСПОЛЬЗУЯ

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

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

  • NULL

    Значение SQL NULL .

  • 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 Standard.

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

Старайтесь не использовать эти имена.

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

Azure Databricks не применяет зарезервированные слова ANSI. Следующий список ключевых слов SQL2016 предоставляется только в информационных целях.

  • A

    ALL, ALTER И, 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

  • Г

    GLOBAL, GRANT, GROUP, GROUPING

  • H

    ИМЕЯ

  • Я

    IN, INNER, INSERT, INTERSECT, INTERVAL, INTO, IS

  • J

    Присоединиться к

  • L

    LEADING, LEFT, LIKE, LOCAL

  • N

    NATURAL, NO, NOT, NULL

  • O

    OF, ON, ONLY ИЛИ, ORDER, OUT, OUTER, ПЕРЕКРЫВАЕТСЯ

  • 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

    ЗНАЧЕНИЯ

  • Ж

    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