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