Reservierte Wörter und Schemas
Gilt für: Databricks SQL Databricks Runtime
Reservierte Wörter sind Literale, die von der SQL-Sprache als Schlüsselwörter verwendet werden und nicht als Bezeichner eingesetzt werden sollten, um ein unerwartetes Verhalten zu vermeiden.
Reservierte Schemanamen haben eine besondere Bedeutung für Azure Databricks.
Reservierte Wörter
Azure Databricks verbietet formal nicht, dass bestimmte Literale als Bezeichner verwendet werden.
Wenn Sie jedoch einen Bezeichner in der folgenden Liste als Tabellenalias verwenden möchten, müssen Sie den Namen in Graviszeichen (`) setzen.
- ANTI
- CROSS
- EXCEPT
- FULL
- INNER
- INTERSECT
- JOIN
- LATERAL
- LEFT
- MINUS
- NATURAL
- EIN
- RIGHT
- SEMI
- UNION
- USING
Spezielle Wörter in Ausdrücken
Die folgende Liste von Bezeichnern kann überall verwendet werden. Sie werden von Azure Databricks jedoch in bestimmten Kontexten in Ausdrücken vorzugsweise wie Schlüsselwörter behandelt:
NULL
Der SQL-Wert
NULL
.DEFAULT
Gibt einen Spaltenstandard an.
TRUE
Der boolesche SQL-Wert
true
.FALSE
Der boolesche SQL-Wert
false
.LATERAL
Wird als Spaltenqualifizierer verwendet, um eine explizite laterale Korrelation anzugeben.
Verwenden Sie Graviszeichen (NULL
und DEFAULT
), oder qualifizieren Sie die Spaltennamen mit einem Tabellennamen oder Alias.
Azure Databricks verwendet das Präfix CURRENT_
, um auf einige Konfigurationseinstellungen oder andere Kontextvariablen zu verweisen.
Das Unterstrichpräfix (_
) ist für Pseudospalten von Azure Databricks vorgesehen.
In Databricks Runtime ist eine vorhandene Pseudospalte die _metadata-Spalte.
Bezeichner mit diesen Präfixen werden vorzugsweise nicht bearbeitet. Vermeiden Sie jedoch Spalten oder Spaltenaliase, die diese Präfixe verwenden, um ein unerwartetes Verhalten zu vermeiden.
Namen des reservierten Katalogs
Azure Databricks reserviert die folgende Liste von Katalognamen für aktuelle und zukünftige Verwendung:
- Katalognamen, die mit
SYS
beginnen - Katalognamen, die mit
DATABRICKS
beginnen
Vermeiden Sie die Verwendung dieser Namen.
Reservierte Schemanamen
Azure Databricks reserviert die folgende Liste von Schemanamen für aktuelle und zukünftige Verwendung:
BUILTIN
Zukünftige Verwendung zum Qualifizieren von integrierten Funktionen.
SESSION
Zukünftige Verwendung zum Qualifizieren temporärer Sichten und Funktionen.
INFORMATION_SCHEMA
Enthält das SQL Standard-Informationsschema.
Schemanamen, die mit
SYS
oderDATABRICKS
beginnen
Vermeiden Sie die Verwendung dieser Namen.
Reservierte Wörter in ANSI
Azure Databricks erzwingt keine reservierten ANSI-Wörter. Die folgende Liste der SQL2016-Schlüsselwörter dient lediglich zu Informationszwecken.
Eine Datei
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
VALUES
W
WHEN, WHERE, WINDOW, WITH
Beispiele
-- 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