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 表名字; 查看刚才新建的索引:
在使用SELECT语句查询的时候,语句中WHERE里面的条件,会自动判断有没有可用的索引。
2、视图
视图是从一个或多个表中导出来的表,是一种虚拟存在的表。它就像一个窗口,通过这个窗口可以看到系统专门提供的数据,这样,用户可以不用看到整个数据库中的数据,而只关心对自己有用的数据。
注意理解视图是虚拟的表:
- 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
- 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
- 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
- 在使用视图的时候,可以把它当作一张表。
创建视图的语句格式为:
CREATE VIEW 视图名(列a,列b,列c) AS SELECT 列1,列2,列3 FROM 表名字;
可见创建视图的语句,后半句是一个SELECT查询语句,所以视图也可以建立在多张表上,只需在SELECT语句中使用子查询或连接查询,这些在之前的实验已经进行过。
现在我们创建一个简单的视图,名为 v_emp,包含v_name,v_age,v_phone三个列:
3、导入
导入操作,可以把一个文件里的数据保存进一张表。导入语句格式为:
LOAD DATA INFILE '文件路径' INTO TABLE 表名字;
现在 /tmp/SQL6 目录下有一个名为 in.txt 的文件,我们尝试把这个文件中的数据导入数据库 mysql_shiyan 的 employee 表中。
先按住 Ctrl+Z 退出MySQL,再使用命令 gedit /tmp/SQL6/in.txt 查看 test.txt 文件中的内容:
再使用以下命令以root用户登录数据库,再连接 mysql_shiyan 数据库:
mysql -u root
use mysql_shiyan
查看一下没有导入数据之前,employee表中的数据:
现在执行导入语句,文件中的数据成功导入employee表:
4、导出
导出与导入是相反的过程,是把数据库某个表中的数据保存到一个文件之中。导出语句基本格式为:
SELECT 列1,列2 INTO OUTFILE '文件路径和文件名' FROM 表名字;
注意:语句中 “文件路径” 之下不能已经有同名文件。
现在我们把整个employee表的数据导出到 /tmp 目录下,导出文件命名为 out.txt 具体语句为:
SELECT * INTO OUTFILE '/tmp/out.txt' FROM employee;
用gedit可以查看导出文件 out.txt 的内容:
5、备份
数据库中的数据或许十分重要,出于安全性考虑,在数据库的使用中,应该注意使用备份功能。
备份与导出的区别:导出的文件只是保存数据库中的数据;而备份,则是把数据库的结构,包括数据、约束、索引、视图等全部另存为一个文件。
mysqldump是MySQL用于备份数据库的实用程序。它主要产生一个SQL脚本文件,其中包含从头重新创建数据库所必需的命令CREATE TABLE INSERT等。
使用mysqldump备份的语句:
mysqldump -u root 数据库名>备份文件名; #备份整个数据库
mysqldump -u root 数据库名 表名字>备份文件名; #备份整个表
我们尝试备份整个数据库 mysql_shiyan,将备份文件命名为 bak.sql,先 Ctrl+Z 退出MySQL,再使用语句:
mysqldump -u root mysql_shiyan > bak.sql;
使用命令“ls”可见已经生成备份文件bak.sql:
你可以用gedit查看备份文件的内容,可以看见里面不止保存了数据,还有所备份的数据库的其他信息。
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
我们输入命令查看 test 数据库的表,便可验证是否恢复成功:
mysql -u root #因为在上一步已经退出了MySQL,现在需要重新登录
use test #连接数据库test
SHOW TABLES; #查看test数据库的表
可以看见原数据库的4张表和1个视图,现在已经恢复到test数据库中:
再查看employee表的恢复情况:
mysql-索引、导入、导出、备份、恢复的更多相关文章
- mongodb导入导出备份恢复
mongodb数据库同样离不开必要的维护,如备份.恢复.导入.导出. 其实备份和恢复比导入和导出要方便些,而且一般不会出错,所以大部分时候使用备份和恢复操作就可以了 1. 备份Mongodb mong ...
- [elk]elasticsearch dashboard+保留10天内索引+导入导出备份
es dashboard 有两款 head 这款我一直在用 https://github.com/mobz/elasticsearch-head 先修改es的配置文件: elasticsearch.y ...
- mysql数据库导入导出 查询 修改表记录
mysql数据导入导出: 导入: 把系统的文件的内容,保存到数据库的表里 导入数据的基本格式:mysql> load data infile "文件名" into table ...
- MySQL数据导入导出方法与工具mysqlimport
MySQL数据导入导出方法与工具mysqlimport<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office ...
- MYSQL数据库导入导出(可以跨平台)
MYSQL数据库导入导出.sql文件 转载地址:http://www.cnblogs.com/cnkenny/archive/2009/04/22/1441297.html 本人总结:直接复制数据库, ...
- 学习 MySQL中导入 导出CSV
学习 MySQL中导入 导出CSV http://blog.csdn.net/sara_yhl/article/details/6850107 速度是很快的 导出 select * from t ...
- MySql 利用mysql&mysqldum导入导出数据
MySql 利用mysql&mysqldum导入导出数据 by:授客 QQ:1033553122 测试环境 Linux下测试,数据库MySql 工具 mysqldump,该命令位于mysq ...
- mysql执行导入导出数据源
mysql执行导入导出数据源 一.导出数据表结构 导出数据库建表的结构,不带数据,windows环境下,在cmd下,执行: mysqldump –no-data –u username –p* dat ...
- MySQL数据导入导出(一)
今天遇到一个需求,要用自动任务将一张表的数据导入另一张表.具体场景及限制:将数据库A中表A的数据导入到数据库B的表B中(增量数据或全量数据两种方式):体系1和体系2只能分别访问数据库A和数据库B.附图 ...
- 【原创】MySql 数据库导入导出(备份)
啥不说了,两周前刚刚做过mysql导入导出的结果现在又忘了.. 更可悲的是竟然同样的三篇blog,现在看起来还是如当初一样费劲,里面的内容..所以自己写个记录一下 环境:*nix 权限:有相关表的写读 ...
随机推荐
- bzoj1297 [SCOI2009]迷路——拆点+矩阵快速幂
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1297 一看感觉是矩阵快速幂之类的,但边权不好处理啊: 普通的矩阵快速幂只能处理边权为1的,所 ...
- 使用display:flex;实现两栏布局和三栏布局
一.使用display:flex;实现两栏布局 body,div{margin:0px;padding:0px;} .flex-container{display:flex;height:300px; ...
- 洛谷P1613 跑路(最短路+倍增)
P1613 跑路 题目描述 小A的工作不仅繁琐,更有苛刻的规定,要求小A每天早上在6:00之前到达公司,否则这个月工资清零.可是小A偏偏又有赖床的坏毛病.于是为了保住自己的工资,小A买了一个十分牛B的 ...
- C语言过时了?为什么还要推荐每一位程序员都来学一下C语言?
互联网蓬勃发展的时代,有一类人做出了巨大的贡献,这一群人被大家称之为程序员,怎样才能成为一名优秀的程序员呢,为什么每一个程序员都需要学习C语言呢? 就让我来跟大家分享分享: 在学习C/C++或者想 ...
- 51nod 1340 差分约束
思路: 带未知量的Floyd 很强 http://yousiki.net/index.php/archives/87/ //By SiriusRen #include <bits/stdc++. ...
- Android App签名(为apk签名)
最近有朋友问到 android 签名的问题,所以转一篇给大家分享: 这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用. 1.签名的意义 为了保证每个应用程序开 ...
- 12.Nodes
Nodes(节点) Animation(动画) KeyframeAnimation 逐帧动画,该节点中包含了所有绑定属性的动画逻辑 Animation Group 逐帧动画分组 S ...
- JVM 垃圾回收器详解
小结: 新生代 串行Serial 并行 Parallel(关注吞吐量) 并行ParNew 老年代 串行 Serial Old 并行Para ...
- Json解析与Gson解析
本文主要介绍json最原始的解析与google提供的gson工具类解析 ①json解析 /** * 普通的json解析 * @param s * @throws JSONException */ pr ...
- ORA-02068,ORA-03135错误解决方法
今天查看了下ERP DB服务器 alter_<SID>.log日志,发现有个错误 Sat Sep 14 14:49:42 CST 2013 Error 2068 trapped in 2P ...