Зарезервированные слова и схемы
Область применения: 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