top
Loading...
9.2.數據庫、表、索引、列和別名
9.2. 數據庫、表、索引、列和別名
9.2.1. 識別符限制條件
9.2.2. 識別符大小寫敏感性

數據庫、表、索引、列和別名是識別符。該節描述了在MySQL中識別符的允許的語法。

下面的表描述了每類識別符的最大長度和允許的字符。

識別符

最大長度(字節)

允許的字符

數據庫

64

目錄名允許的任何字符,不包括‘/’、‘’或者‘

64

文件名允許的任何字符,不包括‘/’、‘’或者‘

64

所有字符

索引

64

所有字符

別名

255

所有字符

除了表內注明的限制,識別符不可以包含ASCII 0或值為255的字節。數據庫、表和列名不應以空格結尾。在識別符中可以使用引號識別符,盡管應盡可能避免這樣使用。

識別符用Unicode(UTF8)保存。在.frm文件中保存的表定義的識別符和在mysql數據庫中的授權表保存的識別符也用Unicode(UTF8)保存。在MySQL 5.1中授權表(和其它表)的字符串列的大小等于字符個數;這說明(不象以前版本的MySQL)你可以在這些列保存的值中使用多字節字符而不需要降低字符個數。

識別符可以引起來也可以不引起來。如果識別符是一個保留字或包含特殊字符,無論何時使用,必須將它引起來。關于保留字的列表參見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模式的名,例如1e2e2,因為類似1e+1的表達式比較模糊。根據上下文,它可以解釋為表達式1e + 1或數字1e+1

使用MD5產生表名時應仔細,因為它可能產生不合法的表名,如上所述。

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html
北斗有巢氏 有巢氏北斗