MYSQL-语言结构- 数据库、表、索引、列和别名

数据库、表、索引、列和别名是识别符。

识别符

最大长度(字节)

允许的字符

数据库

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 条评论) “”
   
验证码:

相关文章

推荐文章