上一篇博客讲述了mysql数据库的连接查询、子查询和合并查询。这一篇博客我来说说mysql数据库中的索引。
A):索引:它由数据库中表的一个列或多个列组合形成索引,其目的是加快数据的查询速度。类似与我们的身份证上的编码,可以快速定位需要的东西。数据库中的主键就是一个特殊的唯一性索引。它的优点是提升了在数据库表中的查询速度,缺点是增加了创建和维护索引的时间。
索引可以分为:
1:普通索引(可以创建在书库表中的任意一列)、
2:唯一性索引(唯一性索引由unique关键字修饰,创建唯一性索引后,该列的值必须是唯一的)、
3:全文索引(全文索引由fulltext关键字修饰,它只能在char、varchar、text字段上设置,主要作用是提高查询较大字符串类型的速度。mysql默认的引擎不支持,myISAM引擎支持)、
4:空间索引(空间索引由spatial关键字修饰,它只能建立在空间数据的类型上,这样可以提高获取空间数据的速率,mysql默认引擎不支持,myISAM引擎支持)、
5:单列索引(在数据库中的表的某一列创建为索引,单列索引可以为普通的单列索引、唯一的单列索引、全文的单列索引)、
6:多列索引(同理多列索引对应于单列索引)。
B):实例:
1):创建表时直接创建普通单列索引,索引名字为index_id:
CREATE TABLE t_user(
id INT,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
INDEX index_id(id)
);
2):创建表时直接创建唯一性单列索引,索引名字默认:
CREATE TABLE t_user(
id INT,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
unique INDEX index_id(id)
);
3):创建表时直接创建普通多列索引,索引名字为系统默认:
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
INDEX (userName, PASSWORD)
);
4):创建表时直接创建唯一性多列索引,索引名字为index_userName_passwors:
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,
userName VARCHAR(20),
PASSWORD VARCHAR(20),
unique INDEX index_userName_password(userName, PASSWORD)
);
总结创建表时直接创建索引代码:create table 表名(字段名1 字段属性1,字段名2 字段属性2, [unique] index 索引名(字段1,字段2,.......))
创建表:
create table t_user(
id int not null,
userName varchar(20),
password varchar(20)
);
用关键字create创建索引。
1):上面创建的表在存在的表中创建id的普通单列索引:
create index index_id on t_user (id);
2):创建userName,password为多列唯一索引:
create unique index index_userName_password on t_user (userName, password);
总结:create [unique] index [索引名] on 表名(字段1,字段2,.......)
创建表:
create table t_user(
id int not null,
userName varchar(20),
password varchar(20)
);
用关键字alter创建索引。
1):创建id为普通单列索引:
alter table t_user add index index_id(id);
2):创建userName,password为唯一的多列索引:
alter table t_user add unique index index_userName_password(userName, password);
总结:
alter table 表名 add [unique] index 索引名(字段1,字段2,......)
删除索引:删除t_user表中索引名为index_id的索引:
drop index index_id on t_user;
总结:
drop index 索引名 on 表名;