mysql的索引和查询等操作

本节实验中我们将学习并实践数据库的其他基本操作:索引、视图,导入和导出,备份和恢复等。

(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 表名字; 

查看刚才新建的索引

(2)视图

视图是从一个或多个表中导出来的表,是一种虚拟存在的表。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。

CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;

(3)导入

导入操作,可以把一个文件里的数据保存进一张表。导入语句格式为:

LOAD DATA INFILE '文件路径和文件名' INTO TABLE 表名字;

(4)导出

是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:

SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;

(5)备份

备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。

mysqldump 是 MySQL 用于备份数据库的实用程序。它主要产生一个 SQL 脚本文件,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT 等。  使用 mysqldump 备份的语句:

mysqldump -u root 数据库名>备份文件名;   #备份整个数据库  
mysql -u root test < bak.sql

mysqldump -u root 数据库名 表名字>备份文件名;  #备份整个表

(6)恢复

用备份文件恢复数据库

source /tmp/SQL6/MySQL-06.sql

这就是一条恢复语句,它把 MySQL-06.sql 文件中保存的mysql_shiyan 数据库恢复。  

还有另一种方式恢复数据库,但是在这之前我们先使用命令新建一个空的数据库 test:

mysql -u root          #因为在上一步已经退出了MySQL,现在需要重新登录

CREATE DATABASE test;  #新建一个名为test的数据库

再次 Ctrl+Z 退出MySQL,然后输入语句进行恢复,把刚才备份的 bak.sql 恢复到 test 数据库:

mysql -u root test < bak.sql

你可能感兴趣的:(数据库)