内容正文:
8.1 MySQL索引与视图
---索引
数据库原理与应用技术--MySQL
同步精品课堂
河北科学技术出版社
教学目标
一
掌握索引的分类
掌握创建索引的命令
了解索引的概念
掌握删除索引的命令
01
02
03
04
掌握国家标准《机械制图》中有关图幅、比例、字体图线等基本规定。
教学重难点
二
教学难点
1、索引的分类
2、索引的相关命令
教学重点
索引的应用
教学难点
导入新课
三
讨论:
一本书的目录可以帮助我们快速的查找到我们想要的信息,那么在数据库中,我们是如何方便快捷地从数据库中查询所需数据?
任务一
1
索引
新知讲授
四
⊙索引
索引也称作“键”,是存储引擎用于快速查找记录的一种数据结构,用来快速查询数据库表中的特定记录。索引是MySQL中的重要对象,是数据库实现数据快速定位和提高数据访问效率的关键技术。
➽ 索引概述
➽ 索引的特点
1、可以大大加快数据的检索速度,这也是创建索引最主要的原因。
2、创建唯一索引,可以保证数据库表中每行数据的唯一性。
3、加速表和表之间的连接。
4、在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。
新知讲授
四
⊙索引
索引在逻辑上分为主键索引和辅助索引两类。
➽ 索引的分类
★ 主索引
主索引是由PRIMARY KEY约束定义的一种特殊的唯一性索引,用于根据主键自身的唯一性标识每条记录,防止添加主键索引的字段值重复或为NULL。InnoDB存储引擎中数据的保存顺序与主键索引的顺序一致,这类索引也被称为聚簇索引,一张表只能有一个聚簇索引。
新知讲授
四
⊙索引
★ 辅助索引
索引名称 说明
普通索引 普通索引(INDEX)是MySQL中最基本的索引,它没有任何限制,它的唯一任务是加快对数据的访问速度。
唯一索引 唯一索引(UNIQUE)与普通索引类似,不同之处在于索引列的值必须唯一,但允许有空值。
全文索引 全文索引(FULLTEXT)可以在CHAR,VARCHAR和TEXT类型的列上创建。在创建索引的列上支持值的全文查找,并且允许列值重复和为NULL。
空间索引 空间索引(SPATIAL)是对空间数据类型的字段创建的索引,且字段不能为空
新知讲授
四
⊙创建索引
➽1、 创建索引
说明:
1、索引名是索引的名称,在表中索引名称必须唯一;
2、字段名表示索引创建的列名,可以是多列;长度表示在字段左边多少个字符上创建索引;
基本语法形式如下:
CREATE [UNIQUE | FULLTEXT | SPATIAL ] INDEX 索引名 ON 表名 (字段名[(长度)][ASC | DESC ]) ;
新知讲授
四
⊙创建索引
说明:
3、UNIQUE表示唯一索引;FULLTEXT表示全文索引;SPATIAL表示空间索引;
4、ASC | DESC 分别表示升序排列和降序排列;
5、CREATE INDEX 语句不能创建主键索引;
新知讲授
四
⊙创建索引
➽ 2、创建索引(创建表的同时创建索引 CREATE TABLE)
基本语法形式如下:
CREATE TABLE 表名
(字段定义1,
字段定义2,
......
字段定义N,
[UNIQUE | FULLTEXT | SPATIAL ] INDEX | KEY
索引名(字段名[(长度)][ASC | DESC ])[VISIBLE | INVISIBLE]
) ;
新知讲授
四
⊙创建索引
说明:
1、INDEX和KEY表示索引关键字,只选其一即可;
2、VISIBLE | INVISIBLE :标识索引的可见性;
1)VISIBLE 为可见,是缺省该项时的默认值;
2)INVISIBLE 表示该索引为不可见索引,在数据查询时,优化器会忽略不可见索引;
新知讲授
四
⊙创建索引
➽ 实例1:创建“student”表,表中字段有学号(char,8)为主键索引且非空,姓名(varchar,16),性别(char,4),班级名(varchar,16)
MySQL命令如下:
CREATE TABLE student (学号 char(8) UNIQUE, 姓名 varchar(16),性别 char(4),班级名 varchar(16));
新知讲授
四
⊙创建索引
➽ 实例1:在student表的Speciality列上创建名为SY_FT_Speciality的全文索引
MySQL命令如下:
CREATE TABLE student INDEX SY_FT_Speciality ON student(Speciality);
➽ 实例2:创建Speciality表,在Spename列上创建名为SY_Spename的唯一索引;
MySQL命令如下:
CREATE TABLE Speciality(Speid INT NOT NULL, Spename Varchar(50)NOT NULL,UNIQUE INDEX SY_Spename(Spename));
新知讲授
四
⊙创建索引
➽ 3、创建索引(ALTER TABLE)
基本语法形式如下:
ALTER TABLE 表名
ADD [UNIQUE | FULLTEXT | SPATIAL ] [INDEX | KEY]
索引名(字段名[(长度)] [ASC | DESC ]);
说明:
关键字ADD表示向表中添加索引,其他参数与使用CREATE TABLE语句创建索引时相同
新知讲授
四
⊙创建索引
➽ 实例1:在student表的Stusex、Speciality、Address三列上创建名为IX_student的复合索引。
MySQL命令如下:
ALTER TABLE student ADD INDEX IX_student (Stusex,Speciality,Address);
新知讲授
四
⊙删除索引
➽ 1、使用ALTER TABLE语句删除索引
基本语法形式如下:
ALTER TABLE 表名 DROP INDEX 索引名;
➽ 2、使用DROP INDEX语句删除索引
基本语法形式如下:
DROP INDEX 索引名 ON 表名;
新知讲授
四
⊙删除索引
➽ 实例1:删除Speciality表上名为SY_Spename的索引
MySQL命令如下:
ALTER TABLE Speciality DROP INDEX SY_Spename;
➽ 实例2:删除student表上名为SY_FT_Speciality的索引
MySQL命令如下:
DROP INDEX SY_FT_Speciality ON student;
师生互动
五
1、总结索引的特点及相关命令。
2、讨论索引在具体操作中的应用。
讨论
随堂练习
六
1、 关于索引,下列说法错误的是( )
A.索引同书的目录一样,可以根据索引快速找到相关的内容
B.索引在逻辑上可以分为主键索引和辅助索引两类
C.索引可以提高数据查询速度
D.索引可以提高数据更新速度
【答案】D
【解析】索引可以提高数据查询速度,降低数据更新速度。
随堂练习
六
2、 在数据库中,一张表可以有( )个主键索引
A.1
B.2
C.3
D.多个
【答案】A
【解析】一张表只能有一个主键索引。
随堂练习
六
3、在索引分类中,唯一索引的作用是( )。
A.唯一索引的值唯一,不能重复
B.唯一索引的值不能为NULL
C.保证参加唯一索引的各列,不得再参加其他的索引
D. 保证唯一索引不能被删除
【答案】A
【解析】唯一索引,索引列的值唯一,但可以为空值
随堂练习
六
4、在学生表“student”中有字段学号,姓名,年龄,性别,专业等字段,其中可以作为主键索引的是( )
A.学号
B.姓名
C.年龄
D.专业
【答案】A
【解析】学号可以保证记录的唯一性,并且学号没有重复值,不能为空
随堂练习
六
5、关于索引,下列说法正确的是( )
A. 一个表可以创建多个主键索引
B. 索引只能建立在一个字段上
C. 索引可以加快查询速度
D.可以使用ADD INDEX语句创建索引
【答案】C
【解析】一个表只能创建一个主键索引,索引可以是一个字段,也可以是复合字段,索引可以加快查询速度。
随堂练习
六
6、创建索引可以加快查询速度,降低更新速度。( )
【答案】对。索引可以加快查询速度,降低更新速度。
7、在一张表中,可以创建多个主键索引和多个唯一索引。( )
【答案】错。一张表只能创建一个主键索引,多个唯一索引。
随堂练习
六
8、在创建索引是使用_________表示升序排列。
【答案】ASC
9、普通索引是MySQL的基本索引,普通索引允许在定义的索引列中插入________和空值。
【答案】重复值
课堂小结
七
谢谢
$$