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中的幾個(不同)配置設置。