Fork me on GitHub

MySQL中的关键字和保留字5.7x

   现在使用navicat,SQLyog等图形界面或者Hibernate做映射生成表的时候,渐渐的会忽视掉关键字这个问题,而后续会不断的产生错误提示或者不产生错误提示但就是建表失败,一遍遍的查询代码无果,甚至开始怀疑人生,但是其实很多情况下只是使用了保留字而已,因此在设计数据库之初便要尽量的规避关键字和保留字

关键字:在SQL中具有重要意义的词,如SELECT, DELETE或 BIGINT。
在mysql的官网引用三个例子,在说明关键字和保留字和作用

1
2
3
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是一个保留关键字,必须引用作为标识符:

1
2
mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

例外:在限定名称中的句点后面的单词必须是一个标识符,所以即使被保留也不需要引用它:

1
2
mysql> CREATE TABLE mydb.interval (begin INT, end INT);
Query OK, 0 rows affected (0.01 sec)

下表是mysql5.7x版本的关键字和保留字

关键字和保留字

[a]ACCOUNT:加入5.7.6(非保留)
[b]ALWAYS:加入5.7.6(非保留)
[c]CHANNEL:加入5.7.6(非保留)
[d]COMPRESSION:加入5.7.8(非保留)
[e]ENCRYPTION:加入5.7.11(非保留)
[f]FILE_BLOCK_SIZE:加入5.7.6(非保留)
[g]FILTER:加入5.7.3(非保留)
[h]FOLLOWS:加入5.7.2(非保留)
[i]GENERATED:加入5.7.6(保留)
[j]GROUP_REPLICATION:加入5.7.6(非保留)
[k]INSTANCE:添加在5.7.11(非保留)
[l]JSON:加入5.7.8(非保留)
[m]MASTER_TLS_VERSION:加入5.7.10(非保留)
[n]MAX_STATEMENT_TIME:加入5.7.4(非保留); 在5.7.8中删除
[o]NEVER:添加在5.7.4(非保留)
[p]NONBLOCKING:在5.7.6中删除
[q]OLD_PASSWORD:在5.7.5中删除
[r]OPTIMIZER_COSTS:加入5.7.5(保留)
[s]PARSE_GCOL_EXPR:加入5.7.6(保留); 在5.7.8中没有保留
[t]PRECEDES:添加在5.7.2(非保留)
[u]REPLICATE_DO_DB:添加在5.7.3(非保留)
[v]REPLICATE_DO_TABLE:添加在5.7.3(非保留)
[w]REPLICATE_IGNORE_DB:添加在5.7.3(非保留)
[x]REPLICATE_IGNORE_TABLE:添加在5.7.3(非保留)
[y]REPLICATE_REWRITE_DB:添加在5.7.3(非保留)
[z]REPLICATE_WILD_DO_TABLE:添加在5.7.3(非保留)
[aa]REPLICATE_WILD_IGNORE_TABLE:添加在5.7.3(非保留)
[ab]ROTATE:添加在5.7.11(非保留)
[ac]STORED:加入5.7.6(保留)
[ad]VALIDATION:加入5.7.5(非保留)
[ae]VIRTUAL:添加在5.7.6(保留)
[af]WITHOUT:加入5.7.5(非保留)
[ag]XID:加入5.7.5(非保留)

本文标题:MySQL中的关键字和保留字5.7x

文章作者:孤城落寞

发布时间:2018年01月23日 - 09:56:49

最后更新:2019年02月21日 - 22:03:48

原始链接:https://blog.gclmit.club/archives/e253c9e9.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。



-------------本文结束 感谢您的阅读-------------
坚持原创技术分享,您的支持将鼓励我继续创作!