识别符可以引起来也可以不引起来。如果识别符是一个保留字或包含特殊字符,无论何时使用,必须将它引起来。关于保留字的列表参见9.6节,“MySQL中保留字的处理”。特殊字符指那些当前字符集、‘_’和‘$’之外的文字数字字符集。
识别符的引用符是反勾号(‘`’):
mysql> SELECT * FROM `select` WHERE `select`.id > 100;如果SQL服务器模式包括ANSI_QUOTES模式选项,还可以用双引号将识别符引起来:
mysql> CREATE TABLE "test" (col INT);ERROR 1064: You have an error in your SQL syntax. ()mysql> SET sql_mode=''ANSI_QUOTES'';mysql> CREATE TABLE "test" (col INT);Query OK, 0 rows affected (0.00 sec)参见5.3.2节,“SQL服务器模式”。
如果你引用识别符,可以在识别符内包括识别符引用符。如果识别符内包括的字符与引用识别符的字符相同,则需要用双字符。下面的语句创建一个名为a`b包含列c"d的表:
mysql> CREATE TABLE `a``b` (`c"d` INT);建议不要使用XeX模式的名,例如1e或2e2,因为类似1e+1的表达式比较模糊。根据上下文,它可以解释为表达式1e + 1或数字1e+1。
使用MD5产生表名时应仔细,因为它可能产生不合法的表名,如上所述。