相关文件10bet官方网站 下载本手册 从本手册中摘录

9.2模式对象名称

MySQL中的某些对象,包括数据库,表,索引,列,别名,视图,存储过程,分区,表空间和其他对象名称称为标识符。本节介绍MySQL中标识符的允许语法。第9.2.1节“标识符长度限制”,表示每种类型的标识符的最大长度。第9.2.3节“标识符案例灵敏度”,描述了哪些类型的标识符区分大小写,在什么条件下。

可以引用或未引用标识符。如果标识符包含特殊字符或是保留字,则为您必须每当您引用它时会引用它。(例外:按照合格名称的句号遵循的保留单词必须是标识符,因此不需要引用。)列出了保留的单词第9.3节,“关键词和保留词”

在内部,标识符被转换为并作为Unicode(UTF-8)存储。标识符中的允许Unicode字符是基本多语言平面(BMP)中的字符。不允许补充字符。因此,标识符可能包含这些字符:

  • 允许的唯一标识符中的字符:

    • ASCII:[0-9,A-Z,A-Z $ _](基本拉丁字母,数字0-9,美元,下划线)

    • 扩展:U + 0080 .. U + FFFF

  • 引用标识符中的允许字符包括完整的Unicode基本多语言平面(BMP),除U + 0000之外:

    • ASCII:U + 0001 .. U + 007F

    • 扩展:U + 0080 .. U + FFFF

  • 在引用或未引用的标识符中不允许ASCII NUL(U + 0000)和补充字符(U + 10000和更高版本)。

  • 标识符可以以数字开头,但除非引用可能不会仅由数字组成。

  • 数据库,表和列名不能以空格字符结尾。

标识符报价字符是反速(`):

MySQL> Select * from`选择'其中`select`.id> 100;

如果是ANSI_QUOTES.启用了SQL模式,还允许在双引号中引用标识符:

MySQL>创建表“test”(col int);错误1064:您的SQL语法中有错误... MySQL> Set SQL_Mode ='Ansi_quotes';MySQL>创建表“test”(col int);查询OK,影响0行(0.00秒)

ANSI_QUOTES.模式使服务器将双引号字符串解释为标识符。因此,当启用此模式时,必须在单引号内括出字符串文字。它们不能封闭在双引号中。如上所述控制服务器SQL模式第5.1.10节“服务器SQL模式”

如果引用标识符,则可以在标识符中包含标识符报价字符。如果要在标识符中包含的字符与用于引用标识符本身的相同,则需要加倍角色。以下语句创建一个名为的表A`B.包含一个名为的列光盘

mysql>创建表`a`bb`(`c“d` int);

在查询的选择列表中,可以使用标识符或字符串引用字符指定引用的列别名:

MySQL>选择1为“一个”,2,“二”;+ ----- + ----- + |一个|二|+ ----- + ----- + |1 |2 |+ ----- + ----- +

在声明中的其他地方,引用对别名的引用必须使用标识符引用,或者参考被视为一个字符串文字。

建议您不使用开头的名称mE.或者mE.N, 在哪里mN是整数。例如,避免使用1E作为标识符,因为诸如的表达式1e + 3是暧昧的。根据上下文,可能会被解释为表达式1e + 3或者作为数字1e + 3

使用时要小心MD5()要生成表名,因为它可以以非法或模糊格式的名称,例如刚才描述的格式。

用户变量不能直接在SQL语句中作为标识符或作为标识符的一部分使用。看第9.4节“用户定义的变量”,有关更多信息和解决方法的示例。

如上所述,数据库和表名中的特殊字符在相应的文件系统名称中编码第9.2.4节“文件名的标识符映射”。如果您拥有旧版MySQL的数据库或表,其中包含特殊字符,并且尚未更新底层目录名称或文件名以使用新的编码,则服务器将其名称显示为前缀#mysql50#。有关引用此类名称或将它们转换为更新编码的信息,请参阅该部分。