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 里面的条件,会自动判断有没有可用的索引。

比如有一个用户表,它拥有用户名(username)和个人签名(note)两个字段。其中用户名具有唯一性,并且格式具有较强的限制,我们给用户名加上一个唯一索引;个性签名格式多变,而且允许不同用户使用重复的签名,不加任何索引。

这时候,如果你要查找某一用户,使用语句 select * from user where username=? 和 select * from user where note=? 性能是有很大差距的,对建立了索引的用户名进行条件查询会比没有索引的个性签名条件查询快几倍,在数据量大的时候,这个差距只会更大。

一些字段不适合创建索引,比如性别,这个字段存在大量的重复记录无法享受索引带来的速度加成,甚至会拖累数据库,导致数据冗余和额外的 CPU 开销。

2、视图:

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

注意理解视图是虚拟的表:

数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;

使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;

视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;

在使用视图的时候,可以把它当作一张表。

创建视图的语句格式为:

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

可见创建视图的语句,后半句是一个 SELECT 查询语句,所以视图也可以建立在多张表上,只需在 SELECT 语句中使用子查询或连接查询,这些在之前的实验已经进行过。

现在我们创建一个简单的视图,名为 v_emp,包含v_name,v_age,v_phone三个列:

例如:CREATE VIEW v_emp (v_name,v_age,v_phone) AS SELECT name,age,phone FROM employee;

3、导入:

此处讲解的是导入一个纯数据文件,该文件中将包含与数据表字段相对应的多条数据,这样可以快速导入大量数据,除此之外,还有用 SQL 语句的导入方式,语法为:source *.sql 这是实验中经常用到的。两者之间的不同是:数据文件导入方式只包含数据,导入规则由数据库系统完成;SQL 文件导入相当于执行该文件中包含的 SQL 语句,可以实现多种操作,包括删除,更新,新增,甚至对数据库的重建。

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

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

由于导入导出大量数据都属于敏感操作,根据 mysql 的安全策略,导入导出的文件都必须在指定的路径下进行,在 mysql 终端中查看路径变量:

注意到 secure_file_priv 变量指定安全路径为 /var/lib/mysql-files/ ,要导入数据文件,需要将该文件移动到安全路径下。

查看文件里的内容为:

导入之前的表数据:

导入之后的表数据:

4、导出:

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

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

注意:语句中 “文件路径” 之下不能已经有同名文件。

现在我们把整个 employee 表的数据导出到 /var/lib/mysql-files/ 目录下,导出文件命名为 out.txt 具体语句为:

SELECT * INTO OUTFILE '/var/lib/mysql-files/out.txt' FROM employee;

查看导出的文件:

4、备份:

数据库中的数据十分重要,出于安全性考虑,在数据库的使用中,应该注意使用备份功能。

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

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

使用 mysqldump 备份的语句:

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

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

mysqldump 是一个备份工具,因此该命令是在终端中执行的,而不是在 mysql 交互环境下。

5、恢复:

用备份文件恢复数据库,其实我们早就使用过了。在本次实验的开始,我们使用过这样一条命令:

source /tmp/SQL6/MySQL-06.sql

也可以新建一个数据库:

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

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

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

use test #连接数据库test

SHOW TABLES; #查看test数据库的表

查看表中数据:

练习:

使用子查询或连接,建立多张表的视图,再用 SELECT 语句展示出视图的内容。

mysqldump导出数据库视图_mysql数据库的基本操作:索引、视图,导入和导出,备份和恢复...相关推荐

  1. mysql 导出dmp文件_Mysql数据库的各种命令:

    一.连接MYSQL 格式: mysql -h主机地址 -u用户名 -p用户密码 1.连接到本机上的MYSQL. 首先打开DOS窗口,然后进入目录mysqlbin,再键入命令mysql -u root ...

  2. 查询mysql视图_MySQL数据库简介及常用命令

    MySQL简介: 1.MySQL发展史:MySQL是my ess que ell而不是myseqel.开发者是瑞典的MySQL AB公司的monty widenius,2008年被sun公司收购,09 ...

  3. mysql 导出dmp文件_MySQL数据库基础讲解

    # 简介 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言(SQL)进行数据库管理. MySQL是开放源代码的,因此任何人都可以在General Publi ...

  4. mysql数据库视图_MySQL数据库8(二十)视图

    视图 视图概念 视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义.同真实的表一样,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义 ...

  5. mysql数据库视图_MySQL数据库应用总结(九)—MySQL数据库视图的操作

    SQL语法预览: 创建视图:[create [or replace] [algorithm={undefined | merge | temptable}] view 视图名称(属性列) as sel ...

  6. 熟悉mysql基本数据库操作系统_MySQL数据库的基本操作

    1.数据库和数据库对象 数据库分为系统数据库和用户数据库. 数据库对象是指存储.管理和使用数据库的不同结构形式,主要包括表.视图.存储过程.函数.触发器和事务. 1.系统数据库 系统数据库是值安装完M ...

  7. mysql数据库应用_MySQL数据库应用 从入门到精通 学习笔记

    以下内容是学习<MySQL数据库应用 从入门到精通>过程中总结的一些内容提要,供以后自己复现使用. 一:数据库 查看所有数据库:SHOW DATABASES 创建数据库:CREATE DA ...

  8. mysql数据库语言_mysql数据库sql语句基础知识

    1.数据库操作 查看当前数据库 SELECT DATABASE(); 显示用户名,数据库版本 SELECT user(), version(); 创建库 CREATE DATABASE[ IF NOT ...

  9. mysql 数据库乱码_Mysql数据库乱码问题的对应方式

    MySQL中数据库乱码一般进行字符集的设定即可,但是乱码可以出现在各个阶段,所以这篇文章整理一下乱码出现的各个阶段以及对应方法. 建库/建表时添加charset设定 建库 CREATE DATABAS ...

  10. mysql数据库快捷键_MySQL数据库(YOG软件)快捷键大全

    Ctrl+M   创建一个新的连接Ctrl+N   使用当前设置新建连接Ctrl+F4   断开当前连接 对象浏览器F5   刷新对象浏览器(默认)Ctrl+B   设置焦点于对象浏览器 SQL 窗口 ...

最新文章

  1. 技术感悟---主动学习
  2. DCMTK:测试框架内容Frame Content FG类
  3. 支持向量机原理及scikit-learn实现
  4. android c 11 编译,Android NDK r9b和编译C 11
  5. ThinkPHP框架在linux服务器nginx环境下跑出现溢出缓存问题解决方法
  6. jenkins修改数据存放路径
  7. Oracle 表对象被锁的解决办法
  8. node.js安装和vue全局安装教程
  9. HTC ONE X(G23)官方解锁教程
  10. 见证蓝创十年庆典,与创业者共成长
  11. 电脑声音图标显示正常却没有声音,扬声器显示未插入
  12. .net core 下文件压缩打包下载
  13. AUTOCAD——Excel表格导入CAD、CAD合并两兄弟
  14. no.10京东咚咚架构演讲读后感
  15. PCBA方案设计——人体电子秤芯片方案
  16. c语言 pv操作,用C语言实现P、V操作
  17. 【时间之外】一个命令解决win10登录黑屏
  18. 脂肪率——最忠实的胖瘦指标
  19. 8g内存一般占用多少_8g内存开机占用一半|Windows操作系统内存使用率多少正常?...
  20. Greenplum数据库查看表倾斜的方法总结

热门文章

  1. python dataframe float转string_盘点Python:Pandas1.0的主要功能
  2. JAVA用JComboBox_java JCombobox和JList的使用
  3. python读excel两列为字典_用python读取Excel并保存字典?一两行代码完成骚操作
  4. 这门国产语言终于要发布 1.0 版本了
  5. 「第三篇」全国电子设计竞赛,这些你必须知道的比赛细节,文末附上近十年电赛题目下载...
  6. 六年级计算机应用计划,2016年小学六年级信息技术教学计划 (800字)
  7. ubuntu查看node的安装目录_ubuntu安装nfs服务实现共享目录
  8. 十大垃圾专业 计算机,十大最好专业和最烂专业是什么
  9. java设置断点,在Java中设置断点
  10. python插入排序_从Python看排序:插入排序