MySQL 关键词及保留词

关键字是SQL中有意义的词。就是MySQL内置规则的词汇,这些关键字为MySQL语法语法,函数定义,解析语法 都提供了很大的方便。某些关键字(如SELECT、DELETE或BIGINT)是保留的,当用作表名和列名等标识符时需要特殊处理。

所谓关键字,看下面例子

案例1:

  • 创建表
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

注意:

  1. 语法报错提:check the manual that corresponds to your MariaDB server version for the right syntax
  2. int ADD 类型字段作为表名 或字段名,显示语法不对,通过以下两种方式:
    "`"间隔号来屏蔽关键词 或 指定 mysql库名

案例2:

  • 5.7版本和8.0版本对比:
    image.png
    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

image.png

注意:从5.6 5.7 版本升级 8.0版本,一定要进行checkForServerUpgrade验证。

关键词有哪些

关键词由于太多了,就列出这些字段。

  • ADD ALL ALTER ACTION
  • ANALYZE AND AS
  • ASC
    具体可以看官网:
    image.png
    https://dev.mysql.com/doc/refman/8.0/en/keywords.html

总结

MySQL常见的一些关键字,尽量避免作为字段名使用。特别是8.0升级也需要注意。
下面提供命名规范参考:

  • 命名使用具有意义的英文词汇,词汇中间以下划线分隔。
  • 有数据库对象使用小写字母。
  • 命名只能使用英文字母、数字、下划线。
  • 字段名禁止超过 32 个字符,须见名知意,禁止拼音英文混用
  • 避免用MySQL的保留字如:call、group,order rank等。
  • 如特殊情况使用,"`"间隔号来屏蔽关键词。

猜你喜欢

转载自blog.csdn.net/dreamyuzhou/article/details/117483521