MySQL/Language/Specifying names

维基教科书,自由的教学读本

使用反引号(`)包上 MySQL的标识符,如表名、列名、数据库名等。这可以更好理解报错信息。对比以下两例:

mysql> SELECT user_id, group_id FROM user,group LIMIT 1;
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 'group LIMIT 1' at line 1

更好的效果:

mysql> SELECT user_id, group_id FROM `user`,`group` LIMIT 1;
ERROR 1146 (42S02): Table 'savannah.group' doesn't exist

它丢了一个字符s:

mysql>  SELECT user_id, group_id FROM `user`,`groups` LIMIT 1;
+---------+----------+
| user_id | group_id |
+---------+----------+
|     100 |        2 |
+---------+----------+
1 row in set (0.02 sec)

反引号允许使用保留字、非法字符作为对象的名字。甚至可以使用反引号自身(输入两遍):

RENAME TABLE `user` TO ````

SQL国际标准建议使用双引号("),但MySql必须先SET sql_mode='ANSI_QUOTES';才支持双引号。注意,根据ANSI SQL,带引号的标识符区分大小写。但MySQL不遵守该要求。这样的标识符是否区分大小写取决于MySQL中的几个(不同)配置设置。