当前课程知识点:MySQL数据库案例教程 > 第2章 数据库和表的基本操作 > 2.5 索引 > 2-5索引视频
同学们好
今天我们来学习第2章
数据库和表的基本操作
本次课的内容是索引
我们先看一个案例
从1万条学生信息中
查询李三的详细信息
我们需要从数据表的第一条记录开始
一条一条比对姓名
直到找到姓名是李三的学生信息
但是
如果我们将姓名提取出来
按照姓氏排序
就可以大大节省时间
这就要用到索引的相关知识
使用索引
可以很大程度上提高数据库的查询速度
本节课将详细介绍MySQL的索引
索引是一种特殊的数据结构
由数据表中的一列或多列组合而成
可以用来快速查询数据表中
有某一特定值的记录
通过索引
查询数据时不用读完记录的所有信息
而只是查询索引列
索引有其明显的优势
可以大大加快数据的查询速度
但是增加索引
也有许多不利的方面
创建和维护索引不仅要耗费时间
还要占用磁盘空间
所以使用索引时
需要综合考虑它的优缺点
索引主要有以下几类
1 普通索引
普通索引是 MySQL 中最基本的索引类型
它没有任何限制
2 唯一索引
唯一索引 索引列的值必须唯一
如果是组合索引
则列的组合必须唯一
主键索引是一种特殊的唯一索引
3 单列索引
即一个索引只包含单个列
一个表可以有多个单列索引
4 组合索引
指在表的多个字段组合上创建的索引
5 全文索引
全文索引只能在CHAR VARCHAR
或者TEXT类型的列上创建
MySQL中
只有MyISAM存储引擎支持全文索引
只有MyISAM存储引擎支持全文索引
MySQL 提供了三种创建索引的方法
我们先学习第一种
在创建表的时候创建索引
创建索引的语法格式如下
在字段名后边跟上
[UNIQUE|FULLTEXT]
INDEX|KEY [索引名]
字段名1 [(长度)]
字段名n[(长度)])
[ASC|DESC])
我们看下各参数的含义
UNIQUE FULLTEXT为可选参数
分别表示唯一索引或全文索引
INDEX 与KEY 两者作用相同
用来指定创建索引
二选一即可
索引名
创建索引的名称
为可选参数
如果不指定
MySQL默认在哪个字段上创建索引
该字段名就是索引名
字段名n
是需要创建索引的字段
该字段必须从数据表中
定义的多个字段中选择
ASC或DESC
指升序或降序
索引是否创建成功
我们可以使用下边两条语句查看
接下来我们看几个案例
先看案例1
创建学生表student
同时在它的sname字段上
创建普通索引
打开MySQL可视化工具
我们先使用USE stu 命令
选择stu数据库
再使用DROP TABLE student;命令
将之前创建的student表删除
然后输入创建索引命令
同样 本次课程中使用的表
前边都已经学习过
所以我们还是直接使用
不再详细介绍表的创建
在最后一个字段后边添加逗号
添加 INDEX(sname)
选中 执行
可以看到执行成功了
请同学们注意
本案例中创建的索引
即是普通索引也是单列索引
我们通过SHOW INDEX命令
查看一下索引
输入命令
SHOW INDEX FROM student
选中 执行
从查询结果可以看到
已经创建了索引sname
接下来我们看案例2
创建课程表course
同时在它的cname字段上创建唯一索引
索引名为unique_cname
我们先使用DROP TABLE course;命令
将之前创建的course表删除
创建表的命令
我们仍然直接使用
在最后一个字段后边添加逗号
添加UNIQUE INDEX
unique_cname(cname)
将这两条语句
选中 执行
可以看到执行成功了
我们通过SHOW INDEX命令
查看一下索引
输入命令
SHOW INDEX FROM course
选中 执行
从查询结果可以看到
已经创建了唯一索引unique_cname
接下来我们看案例3
创建学生表student
同时在它的sid
sname sex字段上创建组合索引
索引名为multi_index
我们先使用DROP TABLE student;命令
将之前创建的student表删除
然后重新输入创建表的命令
在最后一个字段后边添加逗号
添加INDEX multi_index
(sid sname sex)
将这两条语句选中
执行
可以看到执行成功了
我们通过SHOW INDEX命令
查看一下索引
输入命令
SHOW INDEX FROM student
选中 执行
从查询结果可以看到
已经创建了组合索引multi_index
接下来我们看案例4
创建学生表student
同时在它的addr字段上创建全文索引
索引名为addr_index
我们先使用DROP TABLE student;命令
将之前创建的student表删除
然后输入创建表的命令
在最后一个字段后边添加逗号
添加 FULLTEXT INDEX
addr_index(addr)
在语句最后的括号后边
加上ENGINE=MyISAM
将这两条语句选中
执行
可以看到执行成功了
我们通过SHOW INDEX命令
查看一下索引
输入命令
SHOW INDEX FROM student
选中 执行
从查询结果可以看到
已经创建了全文索引addr_index
接下来我们学习第二种
使用 CREATE INDEX 语句
在一个已有的表上创建索引
其语法格式为
create
[UNIQUE|FULLTEXT]
INDEX 索引名
on 表名
(字段名[(长度)] [ASC|DESC])
接下来我们看几个案例
先看案例5
先创建课程表course
然后在它的cname字段上创建唯一索引
索引名为unique_cname
我们先使用
DROP TABLE course;命令
将之前创建的course表删除
然后输入创建表命令
我们直接使用以前创建course表的命令
再输入创建索引的命令
CREATE
UNIQUE
INDEX
unique_cname
ON course(cname)
选中这三条语句执行
可以看到执行成功了
我们通过SHOW INDEX
FROM course
查看一下索引
选中 执行
从查询结果可以看到
已经创建了唯一索引
unique_cname
我们再看案例6
先创建成绩表score
然后在它的sid
cno result字段上
创建组合索引
索引名为multi_index
我们先使用DROP TABLE score;命令
将之前创建的score表删除
然后输入创建表命令
我们直接使用以前创建score表的命令
再输入创建索引的命令
CREATE INDEX multi_index
ON score(sid,cno,result)
选中 执行
可以看到执行成功了
我们通过SHOW INDEX命令
查看一下索引
输入命令
SHOW INDEX FROM score
选中 执行
从查询结果可以看到
已经创建了组合索引multi_index
接下来我们学习第三种
使用ALTER TABLE 语句
在创建好的表上创建索引
其语法格式为
ALTER TABLE 表名 ADD
[UNIQUE|FULLTEXT] INDEX [索引名]
(字段名[(长度)] [ASC|DESC])
接下来我们看案例7
先创建成绩表score
然后使用ALTER TABLE语句
在它的sid cno
result字段上创建组合索引
索引名为multi_index
我们先使用DROP TABLE score;命令
将之前创建的score表删除
然后输入创建表命令
我们直接使用以前创建score表的命令
再输入创建索引的命令
ALTER TABLE score ADD
INDEX multi_index(sid,cno,result)
选中这三条命令执行
可以看到执行成功了
我们通过SHOW INDEX命令查看一下索引
输入命令
SHOW INDEX FROM score
选中 执行
从查询结果可以看到
已经创建了组合索引multi_index
当不再需要索引时
可以删除索引
我们先看第一种
使用DROP INDEX 语句删除索引
其语法格式为
DROP INDEX 索引名 ON 表名
接下来我们看一个案例
案例8 使用DROP INDEX语句
删除score表的索引multi_index
输入命令
Drop index multi_index
on score
选中 执行
可以看到执行成功了
我们通过SHOW INDEX命令查看一下索引
输入命令
SHOW INDEX FROM score
选中 执行
从查询结果可以看到
score表的索引multi_index
已经被成功删除了
我们再看下
如何使用ALTER TABLE 语句删除索引
语法结构为
ALTER TABLE 表名
DROP INDEX 索引名
接下来我们看一个案例
案例9 使用ALTER TABLE语句
删除course表的索引unique_cname
输入命令
ALTER TABLE course
Drop index unique_cname
选中 执行
可以看到执行成功了
我们通过SHOW INDEX FROM course
命令查看一下索引
选中 执行
从查询结果可以看到
course表的索引unique_cname
已经被成功删除了
以上是本节课的全部内容
接下来我们看几个思考题
1 简述索引以及它的优缺点
2 总结索引的类型
以及创建索引的方法
请同学们利用下课时间
来完成这些思考题
最后我们对本此课进行总结
我们先学习了索引的基本概念
又学习了创建索引的三种方法
最后学习了如何删除索引
使用索引时
需要综合考虑它的优缺点
同样的
在日常生活中
很多事情都有两面性
我们要学会以辩证的思维看待问题
取其利避其弊
本次课就讲到这里
谢谢 再见
-1.1 数据库基础知识
-1.2 MySQL的安装与运行
-第1章 测试
-2.1 数据库的基本操作
-2.2 表的基本操作
-2.3 MySQL数据类型
-2.4 约束设置
-2.5 索引
--2-5索引视频
--2-5索引课件
--2-5索引实训
-第2章测试
-3.1 插入记录
-3.2 修改记录
-3.3 删除记录
--3.3删除记录
-第3章 测试
-4.1 select语句
-4.2 单表查询
-4.3 多表查询
-4.4 子查询
--4-4子查询课件
--4-4子查询实训
-4.5 外键
--4-5外键视频
--4-5外键课件
--4-5外键实训
-4.6 视图
--4-6视图视频1
--4-6视图视频2
--4-6视图课件
--4-6视图实训
-第4章测试
-5.1 函数
--5-1系统函数
--5-1函数课件
--5-1 函数实训
-5.2 流程控制语句
-5.3 事务与游标
-5.4 存储过程
-5.5 触发器
--5-5触发器视频
--5-5触发器课件
--5-5触发器实训
-第5章测试
-6.1 数据库备份与还原
-6.2 异构数据源导入导出
-第6章测试
-7.1 用户管理
-7.2 权限管理
-7.3 应用实例开发
-第7章测试