• mysql基础篇


    基础篇 - 其他基本操作

     
     
     
     

    其他基本操作

    一、实验简介

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

    这些概念对于数据库管理员而言都非常重要,请仔细理解并完成所有实验操作。

    二、实验准备

    在正式开始本实验内容之前,需要先下载相关代码。

    下载的代码会搭建好一个名为 mysql_shiyan 的数据库(有三张表:department,employee,project),并向其中插入数据。

    具体操作如下,首先输入命令进入 /home/shiyanlou/Desktop 目录:

    cd /home/shiyanlou/Desktop
    

    然后再输入命令,下载代码:

    git clone http://git.shiyanlou.com/shiyanlou/SQL6
    

    下载完成后,输入命令开启 MySQL 服务并使用 root 用户登录:

    #打开 MySQL 服务
    sudo service mysql start        
    
    #使用 root 用户登录
    mysql -u root
    

    下载的 SQL6 目录下,有个两文件 MySQL-06.sql 和 in.txt,其中第一个文件用于创建数据库并向其中中插入数据,第二个文件用于之后的实验步骤。

    (SQL6 目录在桌面上,你可以用 Gedit 查看、编辑里面的文件。)

    输入命令运行第一个文件,搭建数据库并插入数据:

    source /home/shiyanlou/Desktop/SQL6/MySQL-06.sql
    

    三、实验内容

    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 表名字; 查看刚才新建的索引:

    01

    在使用SELECT语句查询的时候,语句中WHERE里面的条件,会自动判断有没有可用的索引。

    2、视图

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

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

    • 数据库中只存放了视图的定义,而没有存放视图中的数据,这些数据存放在原来的表中;
    • 使用视图查询数据时,数据库系统会从原来的表中取出对应的数据;
    • 视图中的数据依赖于原来表中的数据,一旦表中数据发生改变,显示在视图中的数据也会发生改变;
    • 在使用视图的时候,可以把它当作一张表。

    创建视图的语句格式为:

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

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

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

    02

    3、导入

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

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

    现在 SQL6 目录下有一个名为 in.txt 的文件,我们尝试把这个文件中的数据导入数据库 mysql_shiyan 的 employee 表中。

    先按住 Ctrl+Z 退出 MySQL,下面的几个步骤需要在 Xfce 终端执行。

    打开 Xfce 终端,输入命令拷贝 SQL6 文件夹到 /tmp 目录:

    cp -a /home/shiyanlou/Desktop/SQL6 /tmp/
    

    再使用命令 gedit /tmp/SQL6/in.txt 查看 in.txt 文件中的内容:

    03

    再使用以下命令以 root 用户登录数据库,再连接 mysql_shiyan 数据库:

    # 在Xfce 终端输入命令
    mysql -u root
    
    # 在 MySQL 控制台中输入命令
    use mysql_shiyan
    

    查看一下没有导入数据之前,employee表中的数据:

    04

    现在执行导入语句,文件中的数据成功导入employee表:

    05

    4、导出

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

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

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

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

    SELECT * INTO OUTFILE '/tmp/out.txt' FROM employee;
    

    用 gedit 可以查看导出文件 /tmp/out.txt 的内容:

    06

    5、备份

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

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

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

    使用 mysqldump 备份的语句:

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

    我们尝试备份整个数据库 mysql_shiyan,将备份文件命名为 bak.sql,先 Ctrl+Z 退出 MySQL 控制台,再打开 Xfce 终端,在终端中输入命令:

    mysqldump -u root mysql_shiyan > bak.sql;
    

    使用命令 “ls” 可见已经生成备份文件 bak.sql

    07

    你可以用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数据库中:

    08

    再查看 employee 表的恢复情况:

    09

    四、总结

    在本实验中,我们实践了下面几个基本概念:

    1. 索引:可以加快查询速度
    2. 视图:是一种虚拟存在的表
    3. 导入:从文件中导入数据到表
    4. 导出:从表中导出到文件中
    5. 备份:mysqldump 备份数据库到文件
    6. 恢复:从文件恢复数据库

    五、作业

    1. 按照实验过程完整操作一遍,实验过程截图。
    2. 使用子查询或连接,建立多张表的视图,再用SELECT语句展示出视图的内容,并截图。
  • 相关阅读:
    (转) Weblogic在Linux上节点服务器启动正常,计算机连接不上
    那些提升开发人员工作效率的在线工具
    (转) httpclient对cookie的处理
    (转) 修改weblogic部署的应用名称
    (转) oracle清空数据库脚本
    (转) weblogic 域,管理服务器,受管服务器,集群和机器的基本知识
    (转) Java中的负数及基本类型的转型详解
    (转)JAVA socket 进行十六进制报文交互测试
    liunx weblogic服务启停脚本
    转(HBuilder 打包流程)
  • 原文地址:https://www.cnblogs.com/mrchige/p/6353634.html
Copyright © 2020-2023  润新知