内容正文:
河北省(计算机类)对口招生
《数据库原理与应用技术-MySQL》复习讲义
模块3 MySQL数据库管理
考点 12 索引
【考纲要求】
1. 掌握表的索引操作;
2. 掌握普通索引、唯一性索引、主键索引、聚簇索引和全文索引的概念;
3. 掌握单列索引、组合索引的概念;
4. 掌握创建表时创建索引的语句:CREATE TABLE ... CONSTRAINT index_name;
5. 掌握在已经建立的表中创建索引的语句:CREATE [UNIQE] INDEX index_name;
6. 掌握修改数据表结构同时为数据表添加索引的TABLE 句 :ALTER TABLE ADD[UNIQUE|FULLTEXT] [INDEX|KEY] index_name;
7. 掌握删除索引的语句:DROP INDEX; ALTER TABLE ... DROP INDEX;
【知识网络】
【知识和技能要点】
一、索引概述
索引是数据库中用于提高查询速度的数据库对象,相当于数据表的“目录”。
1.作用
(1)大幅提升查询效率,避免全表扫描。
(2) 唯一索引、主键索引可以约束字段数据唯一性。
2.缺点
增加索引会轻微降低 插入、修改、删除 的执行效率(需要维护索引结构)。
二、索引分类
1. 普通索引
最基础的索引,无任何约束。
特点:字段值可以重复、可以为NULL,只负责优化查询。
2. 唯一性索引(UNIQUE)
约束索引字段值不能重复。
特点:允许为NULL;一张表可以有多个唯一索引。
3. 主键索引(PRIMARY KEY)
约束最强的索引。
特点:唯一、非空;一张表只能有一个主键索引。
4. 聚簇索引
InnoDB 存储引擎中,主键索引就是聚簇索引。
特点:
(1) 索引和真实数据绑定存储。
(2)查询速度最快。
(3)一张表只能有一个聚簇索引。
5. 全文索引(FULLTEXT)
专门用于长文本、字符串字段的关键词检索。
特点:适用于文章、简介、评论等大文本字段,不用于数值、日期字段。
三、按字段数量分类
1. 单列索引:只对单个字段创建的索引。
2. 组合索引(复合索引):对两个或两个以上字段联合创建的索引。
四、索引创建语句
1.创建表时直接创建索引(CREATE TABLE)
语法:在建表语句中通过 CONSTRAINT 定义索引
CREATE TABLE 表名(
字段1 类型,
字段2 类型,
CONSTRAINT 索引名 INDEX(字段)
);
2.已有数据表创建索引(CREATE INDEX)
适用于表已经存在,后续新增索引。
(1)创建普通索引
CREATE INDEX 索引名 ON 表名(字段);
(2)创建唯一索引
CREATE UNIQUE INDEX 索引名 ON 表名(字段);
3.修改表结构添加索引(ALTER TABLE)
(1)语法格式:
ALTER TABLE 表名 ADD [UNIQUE|FULLTEXT] [INDEX|KEY] 索引名(字段);
(2)说明:
① INDEX 和 KEY 完全等价,可以互换。
②不加 UNIQUE / FULLTEXT 默认是普通索引。
五、索引删除语句
1.直接删除索引(DROP INDEX)
独立删除索引语法,最常用。
语法格式:DROP INDEX 索引名 ON 表名;
2.修改表结构删除索引(ALTER TABLE DROP INDEX)
通过修改表结构的方式删除索引
语法格式:ALTER TABLE 表名 DROP INDEX 索引名;
【练习题】
一、填空题
1.约束字段值不可重复、允许为空的索引是________索引。
2.为已有数据表创建普通索引的语句是________ INDEX。
3.使用ALTER TABLE添加全文索引,需要添加________关键字修饰。
4.组合索引生效的核心规则是________原则,违背该规则会导致索引失效。
5.建表语句中使用CONSTRAINT关键字创建唯一索引,需要搭配________关键字修饰索引。
二、选择题
1.数据库中索引的核心作用是( )
A. 加密数据表数据 B. 提高数据查询速度 C. 提高增删改速度 D. 删除重复数据
2.唯一索引的核心约束规则是( )
A. 字段值唯一且非空 B.字段必须为文本类型
C. 字段值不能重复,允许为NULL D. 一张表只能创建一个
3.关于主键索引,下列说法正确的是( )
A. 字段唯一非空,一张表仅有一个 B. 允许字段重复、允许为空
C. 仅用于文本字段 D. 查询速度最慢
4.聚簇索引区别于其他索引的核心特点是( )
A. 允许字段重复 B. 索引和真实数据绑定存储 C. 允许为空值 D. 可创建多个
5.InnoDB存储引擎中,聚簇索引对应的是( )
A. 普通索引 B. 唯一索引 C. 主键索引 D. 全文索引
6.创建唯一索引需要在CREATE INDEX后添加的关键字是( )
A. FULLTEXT B. UNIQUE C. PRIMARY D. CONSTRAINT
7.关于删除索引的说法正确的是( )
A. 会删除表中数据 B. 仅删除索引结构,不删除数据
C. 会删除数据表结构 D. 会修改字段类型
8.既能优化查询,又能约束字段唯一性,但允许为空的索引是( )
A. 普通索引 B. 唯一索引 C. 主键索引 D. 全文索引
9.在一个已有表上创建索引的语句是( )
A.ALTER INDEX语句 B. CREATE TABLE语句
C.CREATE DATABASE语句 D.CREATE INDEX语句
10.删除“T_STU”数据表中名为“IDX_STUNO”的索引的语句是( )
A. DROP INDEX T_STU ON IDX_STUNO
B. DROP INDEX IDX_STUNO ON T_STU
C. ALTER TABLE IDX_STUNO DROP INDEX T_STU
D. ALTER TABLE T STU DROP IDX_STUNO
3、 判断题
1.创建索引后,数据表的插入、修改、删除操作速度会变快。()
2.普通索引无任何约束,字段值可以重复、可以为NULL。()
3.一张数据表可以创建多个主键索引。()
4.InnoDB存储引擎中,主键索引等同于聚簇索引。()
5.全文索引适用于数值、日期类型字段的检索查询。()
6.CREATE INDEX语句默认创建的是唯一索引。()
7.使用ALTER TABLE添加索引,不加修饰关键字默认是全文索引。()
8.删除索引后,数据表中的业务数据会被清空。()
9.已有数据表无法通过CREATE INDEX语句创建索引。()
10.InnoDB引擎中,手动创建的普通索引属于非聚簇索引,索引与物理数据分开存储。()
4、 命令题
1.新建学生表 student(id int,name varchar(20)),同时为name字段创建普通索引 idx_name。
2.已有数据表teacher,请为tel字段创建唯一性索引idx_tel。
3.已有数据表article,为content字段添加全文索引full_content。
4.修改表结构,删除teacher表中idx_tel唯一索引。
5.已有数据表user,为username、password两个字段创建组合普通索引idx_user。
【答案】
一、填空题
1.唯一性(UNIQUE) 2.CREATE 3. FULLTEXT 4. 最左前缀 5. UNIQUE
二、选择题
1. B 2. C 3.A 4. B 5. C 6. B 7. B 8. B 9.D 10. B
三、判断题
1. × 2. √ 3. × 4. √ 5.× 6. × 7. × 8.× 9. × 10.√
四、命令题
1.CREATE TABLE student(
id INT,
name VARCHAR(20),
CONSTRAINT idx_name INDEX(name)
);
2.CREATE UNIQUE INDEX idx_tel ON teacher(tel);
3.ALTER TABLE article ADD FULLTEXT INDEX full_content(content);
4.ALTER TABLE teacher DROP INDEX idx_tel;
5.CREATE INDEX idx_user ON user(username,password);
原创精品资源学科网独家享有版权,侵权必究
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$