当前课程知识点:数据库技术应用 > 学习情境二、创建和管理银行存取款机数据表 > 模块3、索引 > 2.3索引
大家好
欢迎来到数据库技术应用在线开放课程
生活当中我们对数据库的操作主要体现在
数据的增删改查四个方面
前面我们已经将银行自动存取款机的
数据库和表都创建好了
接下来我们需要研究一下
怎么能提高最主要的
这个查询操作的速度呢
我们用到的技术叫索引
所以今天的任务就是
BankDB数据库当中索引的创建
下面呢我们有三个子任务
分别是
使用create index在userinfo表当中
创建基于身份证号的
唯一非聚集索引
第二个使用alter table给
transinfo表的银行卡号
和交易日期增加复合索引
第三个删除银行卡号和
交易日期的复合索引
所以本节课的目标
让大家理解索引的作用
掌握索引的创建方法
让我们一起进入知识技能环节
首先我们来看一下索引及其作用
是一种提高查找速度的机制
它有点像我们平时看书当中的目录
有了这个目录
那么你的查找速度就会非常快
没有这个目录查找起来是比较不方便的
所以在数据库当中
我们也需要通过索引来快速的
寻找那些具有特定值的记录
如果没有索引的话
那么执行mysql语句的查询
就要从第一条记录开始扫描
扫描整个表的所有记录
直至所有符合条件的这个记录找到为止
那么这个工作量就很大了
尤其当你这个表里的数据
比较多的时候这个操作的代价就越来越高
那索引提供指针
已指向存储在表中指定列的数据值
然后根据指定的排序次序排列这些指针
数据库再使用索引的方式和书上的目录就很相似了
通过所以来查找特定的值
然后跟随指针到达包含该值的行
如果作为索引条件的列上
已经创建了索引
mysql就不需要扫描任何记录
即可迅速的知道你想要的目标位置
如果表里有一千行记录
通过这个索引查找记录
至少要比顺序扫描要快一百倍
大家来看这两张表
一个是索引文件
一个是学生表student
学生表student当中建立了学号的索引
也就是按照我们的主键升序排列了
学号的索引对应一个位置
通过这个位置
很快就能定位到指定的记录
所以大家看索引的这个文件
每一个学号对应一个记录号
你在查找的时候
很快的就能锁定到目标位置
那如果没有索引文件的时候
指针在原表当中就会顺序的
一个一个的进行查找
那当要查找位于
第一万条记录的时候20070201
那么计算机当中要在表里面查找一万次
那有索引文件的时候
我们就可以用二分法进行查找
计算机先在索引文件当中
学号为20070201的记录进行查找
找到相应的记录号
再到学生表当中直接读取相关的记录
就可以找到我们想要的这条数据
那索引有几种呢
我们把它分成四种
第一个叫普通索引这是最基本的索引类型
它没有唯一性之分
创建普通索引的关键字是index
index这个词大家应该并不陌生
我们在主页面网页的主页面当中
它的名称都是index
也就是说他本身起到了一个索引的作用
第二个叫唯一性索引
它的关键字是unique
这种索引和前面的普通索引基本相同
但有一个区别
索引列的所有值只能出现一次
也就是必须是唯一的
第三个叫主键索引primary key
我们一直在用它
就是设置主键的一种方式
第四个叫全文索引叫fulltext
mysql支持全文索引和全文检索
全文索引的索引类型为fulltextt
全文索引只能在varchar
或者text类型的列上创建
并且只能在myisam表当中创建
那怎么来创建索引呢
我们来看一下它的语法格式
使用create index语句我们可以创建索引
也就说在已有的一个表当中来创建索引
那这里面是要说明的第一点
unique他表示的是唯一的索引
也就是说
我们可以在index的前面
加上你的索引类型是unique还是fulltext
fulltext刚才咱们说过了是全文索引
那么create index语句不能创建主键
只能创建我们的unique和fulltext
特要注意这个索引名
是相互区分索引的一个标志
它要符合我们的命名规则
那么在创建语法格式当中
create index 索引名后面跟的是
on表名括号 列名
也可以对这个列进行升序或者降序的排列
第二个我们来看一下用
alter table怎么来
修改表当中的属性
也就是说
向我们表当中如何来添加一个索引
用的是alter table 表名
add index后面跟上索引的名称 括号列名
那如果你要添加一个主键
直接用add primary key 索引名称 括号列名
那如果你要加一个唯一性索引
就是add unique索引名称 列名
添加全文索引就是
add fulltext索引名称 列名
那么索引我们建好了
如果说我不需要这个索引了
想把它删掉
那么按照咱们前面删除数据库
删除表的经验
我们删除仍然用到的是drop关键字
用的是drop index 索引名 on表名
这样就可以把指定表当中的索引进行删除
好我们一起进入任务实施环节
根据刚才我们给定的任务
进行数据库 BankDB表
当中的索引的添加和删除
第一个子任务是使用create index
在userinfo表上创建
基于身份证号的一个唯一非聚集索引
按照语法格式create
唯一索引unique index
索引名称U下划线index
哪个表上呢
Userinfo表
所以说on uderinfo
括号字段是PID也就是我们的身份证号
第二个使用alter table给transinfo表的
银行卡号和交易日期添加复合索引
我们用到的是alter table来修改
我们的transinfo表
然后添加add index添加索引
索引名是T下划线index
括号里复合索引的两个字段
分别是cardID和transDate
中间用逗号隔开分号结尾
那最后一个删除银行卡号和交易信息的复核
所以那么我们直接用drop index索引名称
on表名transinfo就可以进行删除了
今天的拓展任务是
员工管理信息系统数据库表的索引的创建
感谢大家的聆听
-模块1、数据库的基础知识
--数据库的基础知识
-模块2、MYSQL介绍与安装
--MYSQL介绍与安装
-模块3、银行存取款机数据库的创建与维护
--银行存取款机数据库的创建与维护
-模块4、银行存取款机数据库的设计
--银行存取款机数据库的设计
-模块1、表的创建
--2.1表的创建
--表的创建
-模块2、表的管理
--2.2表的管理
--表的管理
-模块3、索引
--2.3索引
--索引
-实践小课堂:宠物电商管理平台数据库和表的创建
-模块1、银行存取款机数据插入、修改和删除
--银行存取款机数据插入、修改和删除
-模块2、银行存取款机简单查询
--银行存取款机简单查询和统计查询
-模块3、银行存取款机连接查询
--3.3连接查询
--银行存取款机连接查询
-模块4、银行存取款机子查询
--3.4子查询
--银行存取款机子查询
-模块5、银行存取款机分类汇总与排序
--银行存取款机分类汇总与排序
-模块6、银行存取款机视图
--银行存取款机视图
-模块1、银行存取款机存储过程
--4.1.2事务
--银行存取款机存储过程
-模块2、银行存取款机触发器
--银行存取款机触发器
-模块1、MYSQL用户管理
--MYSQL用户管理
-模块2、MYSQL权限管理
--MYSQL权限管理
-模块3、MYSQL数据库的锁机制
--MYSQL数据库的锁机制
-模块4、MYSQL备份和恢复
--MYSQL备份和恢复