数据库、表、索引、列和别名是识别符。
识别符 | 最大长度(字节) | 允许的字符 |
数据库 | 64 | 目录名允许的任何字符,不包括‘/’、‘\’或者‘。’ |
表 | 64 | 文件名允许的任何字符,不包括‘/’、‘\’或者‘。’ |
列 | 64 | 所有字符 |
索引 | 64 | 所有字符 |
别名 | 255 | 所有字符 |
1.识别符不可以包含ASCII 0(\0)或值为255的字节。
2.识别符用Unicode(UTF8)保存。
3.识别符可以引起来也可以不引起来。如果识别符是一个保留字或包含特殊字符,无论何时使用,必须将它引起来。
4.识别符的引用符是反勾号(‘`’)。(ESC下面哪一个按键)
SELECT * FROM `select` WHERE `select`.id > 100;
5.如果SQL服务器模式包括ANSI_QUOTES模式选项,还可以用双引号将识别符引起来
CREATE TABLE "test" (col INT);
6.你引用识别符,可以在识别符内包括识别符引用符。
CREATE TABLE `a``b` (`c"d` INT);
允许使用由单个识别符或多个识别符组成的名字。多部分名各组件之间应以句点(‘.’)间隔开。多部分名的开头部分作为限定词,后面的识别符被解释。
`my-tables`.`my-column`
Unix中数据库名和表名对大小写敏感,而在Windows中对大小写不敏感。
例外情况是Mac OS X,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感。
要想避免出现差别,最好采用一致的转换,例如总是用小写创建并引用数据库名和表名。在大多数移植和使用中建议使用该转换。
在MySQL中如何在硬盘上保存和使用表名和数据库名由lower_case_tables_name系统变量确定,可以在启动mysqld时设置。
lower_case_tables_name可以采用下面的任一值:
值 | 含义 |
0 | 使用CREATE TABLE或CREATE DATABASE语句指定的大写和小写在硬盘上保存表名和数据库名。名称比较对大小写敏感。在Unix系统中的默认设置即如此。请注意如果在大小写不敏感的文件系统上用--lower-case-table-names=0强制设为0,并且使用不同的大小写访问MyISAM表名,会导致索引破坏。 |
1 | 表名在硬盘上以小写保存,名称比较对大小写敏感。MySQL将所有表名转换为小写以便存储和查找。该行为也适合数据库名和表的别名。该值为Windows和Mac OS X系统中的默认值。 |
2 | 表名和数据库名在硬盘上使用CREATE TABLE或CREATE DATABASE语句指定的大小写进行保存,但MySQL将它们转换为小写以便查找。名称比较对大小写敏感。注释:只在对大小写不敏感的文件系统上适用! InnoDB表名以小写保存,例如lower_case_tables_name=1。 |
在Windows和Mac OS X中,lower_case_tables_name的 默认值是1。
如果你正使用InnoDB表,在任何平台上均应将lower_case_tables_name设置为1,以强制将名转换为小写。
在Unix中将lower_case_tables_name设置为1之前,重启mysqld之前,必须先将旧的数据库名和表名转换为小写。
留言与评论(共有 0 条评论) “” |