MYSQL数据库MySQL 5.7中的关键字与保留字详解
《MYSQL数据库MySQL 5.7中的关键字与保留字详解》要点: MYSQL应用前言 MYSQL应用MySQL和Oracle的关键字还是不尽相同的,在Oracle数据库中,我们的数据表中定义了大量的code字段用来表示主键,但是在MySQL中code是关键字,使用以前的处理方法就有些“水土不服”. MYSQL应用下面我们来了解一下MySQL中的关键字和保留字. MYSQL应用什么是关键字和保留字 MYSQL应用关键字是指在SQL中有意义的字. 某些关键字(例如SELECT,DELETE或BIGINT)是保留的,需要特殊处理才能用作表和列名称等标识符. 这一点对于内置函数的名称也适用. MYSQL应用如何使用关键字和保留字 MYSQL应用非保留关键字允许作为标识符,不需要加引号. 如果您要适用保留字作为标识符,就必须适用引号. MYSQL应用举个例子,BEGIN和END是关键字,但不是保留字,因此它们用作标识符不需要引号. INTERVAL是保留关键字,必须加上引号才能用作标识符. MYSQL应用
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>
MYSQL应用我们看到,第一条语句中表名使用了保留字interval,执行失败; MYSQL应用第二条语句对interval加了引号,执行成功. MYSQL应用在这里需要注意的是,引号必须是反引号,而非单引号.否则会报错,如下所示: MYSQL应用
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>
MYSQL应用有一个例外 MYSQL应用如果标识符在限定名称(数据库名)的句点之后,即使是保留关键字也不需要引号. MYSQL应用我们以hoegh数据库为例,如果表名写为hoegh.interval就不需要对保留字interval加引号了. MYSQL应用
mysql>
mysql> create table hoegh.interval (begin INT,0 rows affected (0.19 sec)
mysql>
mysql> show create table hoegh.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>
MYSQL应用关于使用内置函数名称 MYSQL应用允许内置函数的名称可以作为标识符,但最好谨慎使用.例如,COUNT作为列名称是合法的.但是,默认情况下,在函数名和后面的(之间的函数调用中不允许有空格.这个限制使解析器能够区分名称是用于函数调用还是用在非函数上下文中. MYSQL应用附录 MYSQL应用在某些时候,您可能需要升级到更高版本,因此最好查看一下未来的保留字.您可以在涵盖更高版本的MySQL的手册中找到这些.对于表中的大多数保留字,在标准SQL中禁止作为列或表的名称(例如,GROUP).其中一些保留字,是由于MySQL需要它们并使用一个yacc解析器. MYSQL应用以下列出三张表格: MYSQL应用第一个表格10.2显示MySQL 5.7中的关键字和保留字.保留的关键字标记为(R).此外,_FILENAME是保留的. MYSQL应用第二个表格10.3显示MySQL 5.7相比5.6版本新增的保留字. MYSQL应用第三个表格10.4显示MySQL 5.7相比5.6版本删除的保留字. MYSQL应用Table 10.2 Keywords and Reserved Words in MySQL 5.7 |