保留字和架構
適用於: Databricks SQL Databricks Runtime
保留字是 SQL 語言用來做為關鍵詞的常值,不應做為標識符,以避免非預期的行為。
保留的架構名稱對 Azure Databricks 具有特殊意義。
保留字
Azure Databricks 不會正式禁止任何特定常值作為 標識碼使用。
不過,若要使用下列任何標識符清單做為數據表別名,您必須將名稱括在後面刻度 (')。
- 反
- CROSS
- EXCEPT
- FULL
- INNER
- INTERSECT
- JOIN
- LATERAL
- LEFT
- 減去
- NATURAL
- ON
- RIGHT
- 半
- UNION
- USING
表達式中的特殊字組
您可以在任何地方使用下列識別符清單,但 Azure Databricks 會優先將其視為特定內容中表達式內的關鍵字:
NULL
SQL
NULL
值。DEFAULT
表示數據行預設值。
TRUE
SQL 布爾
true
值。FALSE
SQL 布爾
false
值。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、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
否
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
範例
-- 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