实验目的
本节实验中我们将学习并实践数据库的其它基本操作:索引、视图,导入和导出,备份和恢复等。
实验内容
- 索引
- 视图
- 导入和导出
- 备份和恢复
实验步骤
索引
索引是一种与表有关的结构,它的作用相当于书的目录,可以根据目录中的页码快速找到所需的内容。
语句格式:
ALTER TABLE 表名字 ADD INDEX 索引名 (列名);
CREATE INDEX 索引名 ON 表名字 (列名);
这里我们使用命令 SHOW INDEX FROM 表名字; 查看刚才新建的索引
在使用 SELECT 语句查询的时候,语句中 WHERE 里面的条件,会自动判断有没有可用的索引。
比如有一个用户表,它拥有用户名(username)和个人签名(note)两个字段。其中用户名具有唯一性,并且格式具有较强的限制,我们给用户名加上一个唯一索引;个性签名格式多变,而且允许不同用户使用重复的签名,不加任何索引。
这时候,如果你要查找某一用户,使用语句 select * from user where username=? 和 select * from user where note=? 性能是有很大差距的,对建立了索引的用户名进行条件查询会比没有索引的个性签名条件查询快几倍,在数据量大的时候,这个差距只会更大。
一些字段不适合创建索引,比如性别,这个字段存在大量的重复记录无法享受索引带来的速度加成,甚至会拖累数据库,导致数据冗余和额外的 CPU 开销。
视图
视图是从一个或多个表中导出来的表,是一种虚拟存在的表。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。
注意理解视图是虚拟的表:
- 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
- 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
- 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
- 在使用视图的时候,可以把它当作一张表。
创建视图
CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
可见创建视图的语句,后半句是一个 SELECT 查询语句,所以视图也可以建立在多张表上,只需在 SELECT 语句中使用子查询或连接查询,这些在之前的实验已经进行过。
导入
数据文件导入,可以把一个文件里的数据保存进一张表。导入语句格式为:
LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;
注意要将其复制到安全路径中
导出
导出与导入是相反的过程,是把数据库某个表中的数据保存到一个文件之中。
SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
备份
mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令 CREATE TABLE INSERT 等。
使用 mysqldump 备份的语句:
mysqldump -u root 数据库名>备份文件名; #备份整个数据库
mysqldump -u root 数据库名 表名字>备份文件名; #备份整个表
mysqldump 是一个备份工具,因此该命令是在终端中执行的,而不是在 mysql 交互环境下
恢复
##实验小结
通过此次实验,我主要学习了以下:
索引:可以加快查询速度
视图:是一种虚拟存在的表
导入:从文件中导入数据到表
导出:从表中导出到文件中
备份:mysqldump 备份数据库到文件
恢复:从文件恢复数据库