一、实验简介
1.1 实验内容
本节实验中我们将学习并实践数据库的其它基本操作:索引、视图,导入和导出,备份和恢复等。
这些概念对于数据库管理员而言都非常重要,请仔细理解并完成所有实验操作。
作为基础篇,不会涉及到关于索引和视图的高级应用和核心概念,但是基本操作大家会了解,尤其是关于索引的内容,学会建立恰当的索引可以大大提高数据库的查询效率,更高级的应用我们会在进阶篇详细讲解。
1.2 实验知识点
- 索引
- 视图
- 导入和导出
- 备份和恢复
二、开发准备
注:如果你是从上一节直接进入本节进行学习的,请先删除上一节建立的数据库
mysql_shiyan
,删除语句为DROP DATABASE mysql_shiyan;
。
在正式开始本实验内容之前,需要先下载相关代码。
下载的代码会搭建好一个名为 mysql_shiyan
的数据库(有三张表:department,employee,project),并向其中插入数据。
具体操作如下,首先输入命令进入 /home/shiyanlou/Desktop
目录:
cd /home/shiyanlou/Desktop
然后再输入命令,下载代码:
git clone https://github.com/shiyanlou/SQL6
下载完成后,输入命令开启 MySQL 服务并使用 root 用户登录:
# 打开 MySQL 服务
sudo service mysql start
# 使用 root 用户登录
mysql -u root
下载的 SQL6 目录下,有两个文件 MySQL-06.sql
和 in.txt
,其中第一个文件用于创建数据库并向其中插入数据,第二个文件用于测试数据导入功能。
(SQL6 目录在桌面上,你可以尝试查看、编辑里面的文件。)
如果你是接着上一个实验操作的话,首先把 mysql_shiyan 数据库删掉:
mysql> drop database mysql_shiyan;
输入命令运行第一个文件,搭建数据库并插入数据:
mysql> source /home/fangsi/桌面/Python/MYSQL/SQL_4/SQL6/MySQL-06.sql
三、实验步骤
本节将通过实践操作,带领大家熟悉数据库的其它操作。
3.1 索引
索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。
当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索:将所有记录一一取出,和查询条件进行对比,然后返回满足条件的记录。这样做会执行大量磁盘 I/O 操作,并花费大量数据库系统时间。
而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据,可以大大加快查询速度。
对一张表中的某个列建立索引,有以下两种语句格式:
ALTER TABLE 表名字 ADD INDEX 索引名 (列名);
CREATE INDEX 索引名 ON 表名字 (列名);
我们用这两种语句分别建立索引:
ALTER TABLE employee ADD INDEX idx_id (id); #在employee表的id列上建立名为idx_id的索引
CREATE INDEX idx_name ON employee (name); #在employee表的name列上建立名为idx_name的索引
索引的效果是加快查询速度,当表中数据不够多的时候是感受不出它的效果的。这里我们使用命令 SHOW INDEX FROM 表名字; 查看刚才新建的索引:
在使用 SELECT 语句查询的时候,语句中 WHERE 里面的条件,会自动判断有没有可用的索引<