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