MySQL/Language/Specifying names
< MySQL
使用反引号(`
)包上 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中的几个(不同)配置设置。