计算机二级MySQL笔记(第六章 索引)

MySQL中的索引类型有:

    普通索引(index或key):可以取空值或重复值。 唯一性索引(unique):索引列值不能重复。 主键索引(primary key):主键索引时一种唯一性索引,不同在于,其索引列值不能为空。 聚簇索引 :索引顺序就是数据存储的物理存储顺序,一个表只能有一个聚簇索引,目前仅支持solidDB和InnoDB存储引擎。 非聚簇索引:索引顺序与数据的物理排列顺序无关。 全文索引(fulltext):只能创建在数据类型为varchar或text的列上,仅支持MyISAM存储引擎。

查看索引


show index丨keys from丨in tb_score;

创建索引


表不存在create table

--普通索引
create table tb_student
(	studentNo char(10) not null,
	studentName varchar(20) not null,
	index(studentName));
--唯一性索引、主键索引、外键索引的创建方式与创建约束的方式相同,当创建约束时,系统会自动创建相应索引。

约束的创建方法请移步。

表已存在create index / alter table

--创建基于 courseName 字段值前三个字符的降序索引,索引名称为 index_course
create index index_course on tb_course(courseName(3) desc);

--创建 tb_book 表中图书类别(bclassNo 升序)和书名(bookName 降序)的组合索引,索引名为 index_book
create index index_book on tb_book (bclassNo,bookName desc);

--使用 alter table 添加索引
alter table tb_student add index idx_studentName(studentName);

这里create index / alter table的创建索引类型是有限制的,详情请移步官方手册。


删除索引


drop index语句

drop index index_name on table_name;

alter table语句

alter table table_name drop index index_name;

课后习题


1、在tb_student表上创建主键索引

--创建主键约束后,自动创建主键索引
alter tb_student add constraint PK_studentNo primary key(studentNo);

这里我认为题目有问题,create index 语句的官方手册里是不能创建主键索引的,只能创建uniquefulltextspatial索引,官方手册请移步 。 2、建立学号、课程号的组合索引

create table tb_score
(	studentNo char(10) not null,
	courseNo char(10) not null,
	constraint index_score index(studentNo,courseNo);
)

3、删除索引

drop index index_score on tb_score;
或
alter table tb_score drop index index_score;
经验分享 程序员 微信小程序 职场和发展