保留和受限关键字¶
Snowflake SQL 保留所有 ANSI 关键字(CHAR、DATE、DECIMAL 等类型的关键字除外),以及由其他流行数据库保留的一些额外关键字(ASC、DESC、MINUS 等)。此外,Snowflake 保留关键字 REGEXP 和 RLIKE(其功能类似于 ANSI 保留关键字 LIKE)和 SOME(这是 ANSI 保留关键字 ANY 的同义词)。
为避免解析歧义,Snowflake SQL 还禁止将 LEFT、OUTER、JOIN 等关键字用作 FROM 列表中的表名或别名,也禁止将 TRUE、FALSE、CASE 等关键字用作标量表达式的列引用。
下表列出了 Snowflake 中保留的关键字,以及未严格保留但有使用限制的关键字:
关键字 |
注释 |
---|---|
A |
|
ACCOUNT |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
ALL |
由 ANSI 保留。 |
ALTER |
由 ANSI 保留。 |
AND |
由 ANSI 保留。 |
ANY |
由 ANSI 保留。 |
AS |
由 ANSI 保留。 |
B |
|
BETWEEN |
由 ANSI 保留。 |
BY |
由 ANSI 保留。 |
C |
|
CASE |
不能用作标量表达式中的列引用。 |
CAST |
不能用作标量表达式中的列引用。 |
CHECK |
由 ANSI 保留。 |
COLUMN |
由 ANSI 保留。 |
CONNECT |
由 ANSI 保留。 |
CONNECTION |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
CONSTRAINT |
不能用作 CREATE TABLE DDL 中的列名。 |
CREATE |
由 ANSI 保留。 |
CROSS |
不能用作 FROM 子句中的表名或别名。 |
CURRENT |
由 ANSI 保留。 |
CURRENT_DATE |
不能用作列名(由 ANSI 保留)。 |
CURRENT_TIME |
不能用作列名(由 ANSI 保留)。 |
CURRENT_TIMESTAMP |
不能用作列名(由 ANSI 保留)。 |
CURRENT_USER |
不能用作列名(由 ANSI 保留)。 |
D |
|
DATABASE |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
DELETE |
由 ANSI 保留。 |
DISTINCT |
由 ANSI 保留。 |
DROP |
由 ANSI 保留。 |
E |
|
ELSE |
由 ANSI 保留。 |
EXISTS |
由 ANSI 保留。 |
F |
|
FALSE |
不能用作标量表达式中的列引用。 |
FOLLOWING |
由 ANSI 保留。 |
FOR |
由 ANSI 保留。 |
FROM |
由 ANSI 保留。 |
FULL |
不能用作 FROM 子句中的表名或别名。 |
G |
|
GRANT |
由 ANSI 保留。 |
GROUP |
由 ANSI 保留。 |
GSCLUSTER |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
H |
|
HAVING |
由 ANSI 保留。 |
I |
|
ILIKE |
由 Snowflake 保留。 |
IN |
由 ANSI 保留。 |
INCREMENT |
由 Snowflake 和其他数据库保留。 |
INNER |
不能用作 FROM 子句中的表名或别名。 |
INSERT |
由 ANSI 保留。 |
INTERSECT |
由 ANSI 保留。 |
INTO |
由 ANSI 保留。 |
IS |
由 ANSI 保留。 |
ISSUE |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
J |
|
JOIN |
不能用作 FROM 子句中的表名或别名。 |
L |
|
LATERAL |
不能用作 FROM 子句中的表名或别名。 |
LEFT |
不能用作 FROM 子句中的表名或别名。 |
LIKE |
由 ANSI 保留。 |
LOCALTIME |
不能用作列名(由 ANSI 保留)。 |
LOCALTIMESTAMP |
不能用作列名(由 ANSI 保留)。 |
M |
|
MINUS |
由 Snowflake 和其他数据库保留。 |
N |
|
NATURAL |
不能用作 FROM 子句中的表名或别名。 |
NOT |
由 ANSI 保留。 |
NULL |
由 ANSI 保留。 |
O |
|
OF |
由 ANSI 保留。 |
ON |
由 ANSI 保留。 |
OR |
由 ANSI 保留。 |
ORDER |
由 ANSI 保留。 |
ORGANIZATION |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
Q |
|
QUALIFY |
由 Snowflake 保留。 |
R |
|
REGEXP |
由 Snowflake 保留。 |
REVOKE |
由 ANSI 保留。 |
RIGHT |
不能用作 FROM 子句中的表名或别名。 |
RLIKE |
由 Snowflake 保留。 |
ROW |
由 ANSI 保留。 |
ROWS |
由 ANSI 保留。 |
S |
|
SAMPLE |
由 ANSI 保留。 |
SCHEMA |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
SELECT |
由 ANSI 保留。 |
SET |
由 ANSI 保留。 |
SOME |
由 Snowflake 保留。 |
START |
由 ANSI 保留。 |
T |
|
TABLE |
由 ANSI 保留。 |
TABLESAMPLE |
由 ANSI 保留。 |
THEN |
由 ANSI 保留。 |
TO |
由 ANSI 保留。 |
TRIGGER |
由 ANSI 保留。 |
TRUE |
不能用作标量表达式中的列引用。 |
TRY_CAST |
不能用作标量表达式中的列引用。 |
U |
|
UNION |
由 ANSI 保留。 |
UNIQUE |
由 ANSI 保留。 |
UPDATE |
由 ANSI 保留。 |
USING |
不能用作 FROM 子句中的表名或别名。 |
V |
|
VALUES |
由 ANSI 保留。 |
VIEW |
不能用作 SHOW 命令中的标识符(例如“SHOW ... IN <identifier>”)。 |
W |
|
WHEN |
不能用作标量表达式中的列引用。 |
WHENEVER |
由 ANSI 保留。 |
WHERE |
由 ANSI 保留。 |
WITH |
由 ANSI 保留。 |