官方文档地址: 9.3 Keywords and Reserved Words
关键字是在SQL
中有意义的词。某些关键字(如SELECT
、DELETE
或BIGINT
)是被保留的(被称为保留字),并且需要特殊处理才能作为表名和列名等标识符。对于内置函数的名称也是这样的。
非保留关键字不使用引号就可以作为标识符。如果按照 9.2 模式对象名称 中描述的方式引用它们,保留关键字也是可以作为标识符的:
mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax ...
near 'interval (begin INT, end INT)'
BEGIN
和END
是非保留关键字,因此作为标识符使用时不需要引号。INTERVAL
是一个保留关键字,必须用引号括起作为标识符:
mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)
例外:限定名中跟在点号后面的单词必须是标识符,所以即使它是保留关键字,也不需要用引号括起来:
mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)
允许使用内置函数的名称作为标识符,但可能需要小心使用。例如,COUNT
可以作为列名。但是,在默认情况下,函数名和后面的(
符号之间不允许有空格。这一要求使解析器能够区分该名称是在函数调用中使用还是在非函数上下文中使用。有关函数名识别的更多细节,请参见 9.2.5 函数名称解析和分辨。
INFORMATION_SCHEMA.KEYWORDS
表列出了 MySQL 定义的关键字,并指出它们是否被保留。参见 26.18 INFORMATION_SCHEMA KEYWORDS 表。
MySQL 8.0 关键字和保留字
下面的列表显示了 MySQL 8.0 中的关键字和保留字,以及不同版本对单个字的更改。保留关键字用(R)
标记。此外,_FILENAME
是保留字。
在某些时候,你可能会升级到更高的版本,因此,查看将来的保留字也是一个好主意。你可以在 MySQL 更高版本的手册中找到这些。标准 SQL 禁止使用列表中的大多数保留字作为列名或表名(例如GROUP
)。但有一些是可以使用的,因为 MySQL 使用yacc
解析器的时候需要用到它们。
注:关键字有点多,这里就不列出了,可以直接参考当前翻译文档对应的官方文档。
MySQL 8.0 新增关键字和保留字
下面的列表显示了与 MySQL 5.7 相比,在 MySQL 8.0 中添加的关键字和保留字。保留关键字用(R)
标记。
注:关键字有点多,这里就不列出了,可以直接参考当前翻译文档对应的官方文档。
MySQL 8.0 删除的关键字和保留字
下面的列表显示了与 MySQL 5.7 相比,在 MySQL 8.0 中删除的关键字和保留字。保留关键字用(R)
标记。
- ANALYSE
- DES_KEY_FILE
- MASTER_SERVER_ID
- PARSE_GCOL_EXPR
- REDOFILE
- SQL_CACHE