关键字是SQL中有意义的词。就是MySQL内置规则的词汇,这些关键字为MySQL语法语法,函数定义,解析语法 都提供了很大的方便。某些关键字(如SELECT、DELETE或BIGINT)是保留的,当用作表名和列名等标识符时需要特殊处理。
所谓关键字,看下面例子
- 创建表
mysql> CREATE TABLE int (begin INT, end INT);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'int (begin INT, end INT)' at line 1
mysql>
mysql> CREATE TABLE `int` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)
mysql> CREATE TABLE db1.int (begin INT, end INT);
Query OK, 0 rows affected (0.02 sec)
- 字段:
mysql> CREATE TABLE test(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(30),
`ADD` VARCHAR(12),
rank VARCHAR(30)
);
mysql> INSERT INTO test(name,`ADD`,rank) VALUES('Jim','001','10'),('Tom','002','20'),('Him','003','5');
mysql> SELECT ADD FROM test;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ADD FROM test' at line 1
注意:
- 语法报错提:check the manual that corresponds to your MariaDB server version for the right syntax
- int ADD 类型字段作为表名 或字段名,显示语法不对,通过以下两种方式:
"`"间隔号来屏蔽关键词 或 指定 mysql库名
-
5.7版本和8.0版本对比:
rank,load升级版本就可能会存在隐患 -
版本升级提示keywords错误:
mysqlsh -- util checkForServerUpgrade root:[email protected]:3306 --target-version=8.0.25 --output-format=JSON --config-path=/etc/my5.7.cnf > upgrade.txt
注意:从5.6 5.7 版本升级 8.0版本,一定要进行checkForServerUpgrade验证。
关键词由于太多了,就列出这些字段。
- ADD ALL ALTER ACTION
- ANALYZE AND AS
- ASC
具体可以看官网:
https://dev.mysql.com/doc/refman/8.0/en/keywords.html
总结
MySQL常见的一些关键字,尽量避免作为字段名使用。特别是8.0升级也需要注意。
下面提供命名规范参考:
- 命名使用具有意义的英文词汇,词汇中间以下划线分隔。
- 有数据库对象使用小写字母。
- 命名只能使用英文字母、数字、下划线。
- 字段名禁止超过 32 个字符,须见名知意,禁止拼音英文混用
- 避免用MySQL的保留字如:call、group,order rank等。
- 如特殊情况使用,"`"间隔号来屏蔽关键词。