内容正文:
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第61练,内容是创建索引。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第61练
创建索引
一、单项选择题
1. 关于MySQL中索引的说法,下列选项中正确的是( )。
A. 索引是一种用于修改数据的数据结构,可以加速UPDATE和DELETE操作
B. 在InnoDB存储引擎中,数据表的物理存储顺序由唯一索引决定
C. 索引可以创建在任意数据类型的列上,包括BLOB和TEXT类型
D. 一张InnoDB表可以拥有多个聚簇索引
2.某电商系统中,订单表orders含有字段order_id(主键)、user_id、order_date、amount。为了提高按user_id查询订单,同时又要保证user_id列的值不重复(但允许有空值),应创建哪种类型的索引?
A. 普通索引
B. 唯一索引
C. 主键索引
D. 全文索引
3.在MySQL中,对于复合索引(a, b, c),下列哪个查询条件能够完全使用该复合索引进行快速查找?
A. WHERE b = 10 AND c = 20
B. WHERE a = 5 AND c = 30
C. WHERE a = 5 AND b = 15 AND c = 25
D. WHERE c = 40 AND a = 8
4.下列关于CREATE INDEX语句的说法,错误的是( )。
A. CREATE INDEX idx_name ON student(score DESC); 可以创建降序索引
B. CREATE UNIQUE INDEX idx_phone ON users(phone); 可以创建唯一索引
C. CREATE FULLTEXT INDEX idx_content ON articles(content); 可以创建全文索引
D. CREATE PRIMARY INDEX idx_id ON student(id); 可以创建主键索引
5.在MySQL 8.0中,执行以下SQL语句创建表:
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(50),
dept_id INT,
INDEX idx_dept (dept_id) INVISIBLE
);
关于索引idx_dept,以下说法正确的是( )。
A. 该索引在创建时不可见,但在查询时优化器仍会强制使用它
B. 该索引不可见,优化器在执行查询时会忽略此索引,但索引本身仍在维护(如插入、更新时更新)
C. 该索引不可见,且MySQL不会维护该索引,相当于索引被删除
D. 该索引创建失败,因为普通索引不能设置为INVISIBLE
二、填空题
1.在InnoDB存储引擎中,数据的物理存储顺序与________索引的顺序一致,这种索引被称为聚簇索引。
2.在CREATE INDEX语句中,创建唯一索引使用的关键字是________。
3.在创建表时,若希望索引不被优化器使用,可以在索引定义后添加关键字________将其设置为不可见索引。
4.全文索引可以在CHAR、VARCHAR或________类型的列上创建,用于对文本中的关键词进行快速搜索。
5.使用ALTER TABLE语句向已有表中添加索引的基本语法为:ALTER TABLE 表名 ADD [索引类型] INDEX 索引名 (字段名); 其中,用于创建唯一索引的索引类型关键字是________。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$
编写说明:依托三阶支架资源编写方案,《一课一练》明确基础层具象化支架定位,作为课堂同步配套资源,其内容与课堂教学深度绑定,并且精准匹配中职学生知识基础与学习特质,遵循"由浅入深、循序渐进"的认知规律,聚焦基础性与实效性核心,通过拆解知识点、简化认知难度,切实降低学习门槛,为后续知识巩固与能力提升筑牢根基,是优质课后作业首选。
本卷是《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》第61练,内容是创建索引。
《数据库原理与应用技术-MySQL》(河北科学技术出版社)《一课一练》 第61练
创建索引
一、单项选择题
1. 关于MySQL中索引的说法,下列选项中正确的是( )。
A. 索引是一种用于修改数据的数据结构,可以加速UPDATE和DELETE操作
B. 在InnoDB存储引擎中,数据表的物理存储顺序由唯一索引决定
C. 索引可以创建在任意数据类型的列上,包括BLOB和TEXT类型
D. 一张InnoDB表可以拥有多个聚簇索引
【答案】C
【解析】
A错误:索引主要用于快速查询数据,虽然索引可以加速带条件的UPDATE和DELETE(因为需要先定位记录),但索引本身不是为修改数据设计的,相反索引会降低插入、更新、删除的速度(因为需要维护索引结构)。
B错误:在InnoDB中,决定物理存储顺序的是主键索引(聚簇索引),而非唯一索引。唯一索引属于辅助索引,不决定物理存储顺序。
C正确:MySQL官方文档指出“所有数据类型都可以被索引”,BLOB和TEXT类型也可以创建索引,但通常需要指定前缀长度。
D错误:InnoDB表中只能有一个聚簇索引(通常是主键),其他索引均为辅助索引。
2.某电商系统中,订单表orders含有字段order_id(主键)、user_id、order_date、amount。为了提高按user_id查询订单,同时又要保证user_id列的值不重复(但允许有空值),应创建哪种类型的索引?
A. 普通索引
B. 唯一索引
C. 主键索引
D. 全文索引
【答案】B
【解析】
A错误:普通索引允许重复值和空值,但题目要求“不重复”,不满足。
B正确:唯一索引(UNIQUE INDEX)要求列值唯一,但允许NULL值(多个NULL值被视为不同值,在MySQL中唯一索引允许存在多个NULL)。符合“不重复但允许空值”的要求。
C错误:主键索引要求值唯一且不能为空,不符合“允许有空值”的要求。且一张表只能有一个主键,order_id已为主键。
D错误:全文索引用于文本关键词搜索,不适用于普通数值或短字符串的唯一性约束。
3.在MySQL中,对于复合索引(a, b, c),下列哪个查询条件能够完全使用该复合索引进行快速查找?
A. WHERE b = 10 AND c = 20
B. WHERE a = 5 AND c = 30
C. WHERE a = 5 AND b = 15 AND c = 25
D. WHERE c = 40 AND a = 8
【答案】C
【解析】
最左前缀原则:复合索引(a, b, c)只能从索引的最左侧列开始匹配,跳过前面的列则后续索引列无法使用。
A错误:查询条件缺少a,无法使用索引的第一个列,因此不能完整使用该复合索引(可能部分使用或全表扫描)。
B错误:条件包含a但跳过了b,只能用到索引的第一列a,c无法使用。
C正确:同时使用了a、b、c三个列,且顺序与索引定义顺序一致,可以完全使用复合索引。
D错误:虽然包含a,但条件的顺序不影响SQL解析,实际上等同于a=8 AND c=40,仍然跳过了b,只能用到a列。
注意:查询条件的书写顺序不影响索引使用,关键是存在的条件列是否从最左侧连续。
4.下列关于CREATE INDEX语句的说法,错误的是( )。
A. CREATE INDEX idx_name ON student(score DESC); 可以创建降序索引
B. CREATE UNIQUE INDEX idx_phone ON users(phone); 可以创建唯一索引
C. CREATE FULLTEXT INDEX idx_content ON articles(content); 可以创建全文索引
D. CREATE PRIMARY INDEX idx_id ON student(id); 可以创建主键索引
【答案】D
【解析】
A正确:CREATE INDEX支持在索引定义中指定ASC或DESC,可以创建降序索引。
B正确:使用UNIQUE关键字可以创建唯一索引。
C正确:使用FULLTEXT关键字可以创建全文索引。
D错误:CREATE INDEX语句不能创建主键索引。主键索引必须通过PRIMARY KEY约束在CREATE TABLE或ALTER TABLE中定义。这是题目考查的关键知识点。
5.在MySQL 8.0中,执行以下SQL语句创建表:
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(50),
dept_id INT,
INDEX idx_dept (dept_id) INVISIBLE
);
关于索引idx_dept,以下说法正确的是( )。
A. 该索引在创建时不可见,但在查询时优化器仍会强制使用它
B. 该索引不可见,优化器在执行查询时会忽略此索引,但索引本身仍在维护(如插入、更新时更新)
C. 该索引不可见,且MySQL不会维护该索引,相当于索引被删除
D. 该索引创建失败,因为普通索引不能设置为INVISIBLE
【答案】B
【解析】
A错误:不可见索引(INVISIBLE)的作用是让优化器忽略该索引,即使使用FORCE INDEX也无法强制使用,而不是“强制使用”。
B正确:不可见索引对优化器不可见,但DML操作(INSERT、UPDATE、DELETE)仍然会维护该索引,以保证如果将索引重新设为可见时数据正确。
C错误:索引仍然存在且被维护,只是查询优化器不使用它。
D错误:从MySQL 8.0开始,支持将普通索引、唯一索引等设置为INVISIBLE(主键索引不能设置不可见)。
二、填空题
1.在InnoDB存储引擎中,数据的物理存储顺序与________索引的顺序一致,这种索引被称为聚簇索引。
【答案】 主键
【解析】
InnoDB表中,主键索引即为聚簇索引,叶子节点存储完整的数据行记录,数据按照主键值的顺序物理存放。若无显式定义主键,InnoDB会自动选择第一个唯一非空索引作为聚簇索引。
2.在CREATE INDEX语句中,创建唯一索引使用的关键字是________。
【答案】 UNIQUE
【解析】
语法格式:CREATE UNIQUE INDEX 索引名 ON 表名(列名); UNIQUE关键字确保索引列中的值唯一(允许空值,但多个NULL视为不同)。
3.在创建表时,若希望索引不被优化器使用,可以在索引定义后添加关键字________将其设置为不可见索引。
【答案】 INVISIBLE
【解析】
语法示例:INDEX idx_name (col_name) INVISIBLE。默认可见(VISIBLE)。不可见索引可用于测试删除索引对查询性能的影响而无需实际删除。
4.全文索引可以在CHAR、VARCHAR或________类型的列上创建,用于对文本中的关键词进行快速搜索。
【答案】 TEXT
【解析】
MySQL中全文索引(FULLTEXT)主要适用于大文本字段,支持CHAR、VARCHAR和TEXT类型。需使用MATCH() AGAINST()进行全文检索。
5.使用ALTER TABLE语句向已有表中添加索引的基本语法为:ALTER TABLE 表名 ADD [索引类型] INDEX 索引名 (字段名); 其中,用于创建唯一索引的索引类型关键字是________。
【答案】 UNIQUE
【解析】
完整示例:ALTER TABLE employee ADD UNIQUE INDEX idx_email (email); 类似地,还可以使用FULLTEXT、SPATIAL等。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$