MySQL基础知识

7. 聚簇索引

每个InnoDB表都有一个特殊的索引,称为聚簇索引,其中存储着数据行。通常聚簇索引与主键是同义词

归属:聚簇索引是InnoDB存储引擎所特有的

说明:

◇ 当你为表定义主键时,InnoDB会将其作为表的聚簇索引。请为你创建的每个表都显式地定义主键。如果不存在逻辑上唯一且非空的列或列组合,请添加一个自增列,其值能够自动填充;

◇ 如果你没有为表定义主键,InnoDB将查找第一个全部列都是NOT NULL的唯一索引,将其用作聚簇索引;

◇ 如果表没有主键,也没有符合条件的唯一索引,InnoDB将在一个包含行ID的合成列上生成隐藏的聚簇索引。此时数据行将根据InnoDB分配给数据行的ID值进行排序。行ID是一个6字节的字段,随着新行插入到表中而单调递增。因此,根据行ID排序实际上就是根据行的插入顺序排序;


为了使查询、插入和其它数据库操作的性能最佳,你必须了解InnoDB如何使用聚簇索引来优化每个表中最常见的查询和DML操作


聚簇索引如何加速查询

通过聚簇索引访问数据行是很快的,因为索引搜索能够直接定位到包含该行全部数据所在的页面。如果表很大,与行数据和索引记录存储在不同页面的存储组织相比,聚簇索引结构通常能够节省一次磁盘I/O操作


辅助索引和聚簇索引的关系

除聚簇索引以外的所有索引都称为辅助索引。在InnoDB中,辅助索引中的每个记录既包含辅助索引列,也包含主键列。InnoDB使用主键值搜索聚簇索引中的数据行。如果主键很长,辅助索引使用的空间将会更多,因此一个短的主键是有利的


6. 索引

索引的类型:

◇ B-Tree索引

◇ 哈希索引

◇ 空间索引

◇ 全文索引

主键:InnoDB与MyISAM都拥有主键的概念,结构上都是一棵B-Tree,但区别如下:

InnoDB的主键即聚簇索引,聚簇索引即主键;

MyISAM的主键与辅助索引结构上没有差别,MyISAM的主键即普通的唯一非空索引



5. 存储引擎

存储引擎分类:

◇ InnoDB

◇ MyISAM

◇ 其它的MySQL内置存储引擎,如ARCHIVE, MEMORY

◇ 第三方存储引擎



4. 字符串字面值

△ 字符串是由单引号或双引号包裹的字节或字符序列,例如:

'a string'

"another string"

△ 彼此相邻的字符串,会被连接到一起,形成一个新的字符串,例如下面两行等价:

'hello world'

'hello' " " "world"


△ 字符串内的某些字符序列有特殊的含义,它们被称为转义序列,转义序列以转义字符「\」开头,MySQL识别的转义序列如下图所示


对于其它的转义序列,反斜杠自动被忽略,也就是说被转义字符当作无转义字符对待,例如,\x相当于x

转义序列,大小写敏感,例如,\b相当于退格符,而\B相当于B

模式匹配上下文中,「%」和「_」作为通配符存在,所以在模式匹配上下文中,如需引用%」和「_」,需要对其转义,例如「\%「\_。而在模式匹配上下文之外,「\%「\_」代表的就是「\%「\_」,而非%」和「_


△ 在字符串中包含引号字符的方式如下:

① '里面包含'时,字符串里的单引号需写两次''

② "里面包含"时,字符串里的双引号需写两次""

③ 对引号字符进行转义,字符前加反斜杠

④ "里面包含',或'里面包含"时,无需特别对待

示例:










3. 文件结构

MySQL中,每个数据库,对应数据目录中的一个单独的目录;数据库中的表,对应数据库目录中一个或多个文件



2. 关键字和保留字

「interval「write

完整保留字列表

https://dev.mysql.com/doc/refman/5.5/en/keywords.html



1. 标识符

MySQL内的某些对象,如数据库、表、索引、列、别名、视图、存储过程、分区、表空间和其它一些对象,它们的名字被称作标识符

△ 引用标识符时,可以加,也可以不加引号,但是当标识符为下列情况之一时,引用时必须加引号:

① 包含特殊字符,比如「减号-」

② 本身是保留字

☆ 标识符引号字符是反引号


△ 标识符中可以包含引号字符,提前是标识符已被引号字符引用。当标识符内含的引号与引用标识符的引号相同时,你需要将标识符内含的引号写两次

示例:创建一个名为a`b的表,表中包含一个名为c"d的整数列


△ Unix MySQL下,数据库名,表名,大小写敏感;列名,索引名,大小写不敏感


posted on 2017-07-03 17:48  柴科夫斯不是基  阅读(234)  评论(0编辑  收藏  举报

导航