Reservierte Wörter und Schemas

Gilt für:durch Häkchen mit „Ja“ markiert Databricks SQL durch Häkchen mit „Ja“ markiert 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 oder DATABRICKS 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