MySQL 5.7中的关键字与保留字详解中的关键字与保留字详解
前言前言
MySQL和Oracle的关键字还是不尽相同的,在Oracle数据库中,我们的数据表中定义了大量的code字段用来表示主键,但是
在MySQL中code是关键字,使用以前的处理方法就有些“水土不服”。
下面我们来了解一下MySQL中的关键字和保留字。
什么是关键字和保留字什么是关键字和保留字
关键字是指在SQL中有意义的字。 某些关键字(例如SELECT,DELETE或BIGINT)是保留的,需要特殊处理才能用作表和列
名称等标识符。 这一点对于内置函数的名称也适用。
如何使用关键字和保留字如何使用关键字和保留字
非保留关键字允许作为标识符,不需要加引号。 如果您要适用保留字作为标识符,就必须适用引号。
举个例子,BEGIN和END是关键字,但不是保留字,因此它们用作标识符不需要引号。 INTERVAL是保留关键字,必须加上
引号才能用作标识符。
mysql>
mysql> use hoegh;
Database changed
mysql>
mysql> CREATE TABLE interval (begin INT, end INT);
ERROR 1064 (42000):
mysql>
mysql> CREATE TABLE `interval` (begin INT, end INT);
Query OK, 0 rows affected (0.42 sec)
mysql>
mysql> show create table `interval`;
+----------+---------------------------------------------------------
| Table | Create Table
+----------+---------------------------------------------------------
| interval | CREATE TABLE `interval` (
`begin` int(11) DEFAULT NULL,
`end` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
+----------+---------------------------------------------------------
1 row in set (0.00 sec)
mysql>
我们看到,第一条语句中表名使用了保留字interval,执行失败;
第二条语句对interval加了引号,执行成功。
在这里需要注意的是,引号必须是反引号,而非单引号。否则会报错,如下所示:
mysql>
mysql> drop table `interval`;--使用反引号
Query OK, 0 rows affected (0.11 sec)
mysql>
mysql> create table 'interval' (begin INT, end INT);--使用单引号,报错
ERROR 1064 (42000):
mysql>
有一个例外有一个例外
如果标识符在限定名称(数据库名)的句点之后,即使是保留关键字也不需要引号。
我们以hoegh数据库为例,如果表名写为hoegh.interval就不需要对保留字interval加引号了。
mysql>
mysql> create table hoegh.interval (begin INT, end INT);
Query OK, 0 rows affected (0.19 sec)
评论0