索引:个人的理就是,索引是一种加快查询数据的数据结构。
索引种类
-
主键索引」(PRIMARY KEY):
一般在创建表的时候指定,「一个表只有一个主键索引」,特点是「唯一、非空」
。 -
「唯一索引」(UNIQUE):
特点是唯一性
,可以在创建表的时候指定,也可以在创建表后创建。 -
「普通索引」(INDEX):
唯一的作用就是加快查询
。 -
「组合索引」( INDEX):
创建一个「多个字段的索引」
,这个概念是相对于上上面的单列索引而言,组合索引遵循「最左前缀原则」
。 -
「全文索引」(FULLTEXT):
针对大的「文本字段」
创建的索引,也称为「全文检索」。 -
「聚簇索引」
和「非聚簇索引」:
聚簇索引和非聚簇索引的概念比上面的概念要大,属于包含和被包含的关系。Mysql主键索引使用的就是聚簇索引。
查看一个表的所有索引,可以执行"
show index from 表名
"来查看:Key_name
表示索引的名字,Column_name
表示索引的字段。
主键索引
-
主键索引在InnoDB存储引擎中是最常见的索引类型,一个表都会有一个主键索引,它索引的字段
不允许为空值,并且唯一
。 -
在创建表的时候,可以通过
RIMARY KEY
指定主键索引,在InnoDB存储引擎中,若是创建表的时候没有主观创建主键索引,Mysql就会看表中是否有唯一索引
,有,就会指定「非空的唯一索引」
为主键索引;没有,就会默认生成一个6byte空间的自动增长主键
作为主键索引,可以通过select _rowid from 表名
查询的是对应的主键值.。 -
MyISAM储存引擎是可以不存在主键索引,MyISAM和InnoDB储存数据的结构方式有明显的区别
唯一索引
-
唯一索引与主键索引的区别就是,唯一索引
允许为空
,若是在组合索引中,只要创建的列值是唯一的 -
唯一索引在实际中更多的是用来
保证数据的唯一性
,如仅仅要数据能够快速查询,可以使用普通索引 -
创建唯一索引的方式有三种。
(1)在创建表的时候指定:
CREATE TABLE user(
id INT PRIMARY KEY NOT NULL,
name VARCHAR(16) NOT NULL,
UNIQUE unique_name (name(10))
)