保留字和架構
適用于: Databricks SQL Databricks Runtime
保留字是 SQL 語言用來作為關鍵字的常值,不應當做識別碼來避免非預期的行為。
保留的架構名稱對 Azure Databricks 有特殊意義。
保留字
Azure Databricks 不會正式禁止任何特定的常 值作為識別碼使用。
不過,若要使用下列任何 識別碼 清單做為 資料表別名,您必須將名稱括住 (') 。
- 反
- CROSS
- 除了
- 全
- 內
- 相交
- 加入
- 側
- 離開
- 減去
- 自然
- ON
- 對
- 半
- 聯盟
- 使用
運算式中的特殊字組
您可以在任何地方使用下列 識別碼 清單,但 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 標準 資訊架構。
開頭為
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
我
IN、INNER、INSERT、INTERSECT、INTERVAL、INTO、IS
J
加入
我
LEADING、LEFT、LIKE、LOCAL
N
NATURAL、NO、NOT、Null
O
OF、ON、ONLY 或 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
美國
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