MySQL的数据备份与还原--练习题

MySQLdump

MySQLdump是MySQL提供的一个非常有用的数据库备份工具。MySQLdump命令执行时,可以将数据库备份成一个文本文件,该文件中实际上包含了多个CREATE 和 INSERT语句,使用这些语句可以重新创建表和插入数据。

 看题:

第一题:

CREATE DATABASE booksDB;
    use booksDB;

    CREATE TABLE books
    (
      bk_id  INT NOT NULL PRIMARY KEY,
      bk_title VARCHAR(50) NOT NULL,
      copyright YEAR NOT NULL
    );


    INSERT INTO books
    VALUES (11078, 'Learning MySQL', 2010),
    (11033, 'Study Html', 2011),
    (11035, 'How to use php', 2003),
    (11072, 'Teach youself javascript', 2005),
    (11028, 'Learing C++', 2005),
    (11069, 'MySQL professional', 2009),
    (11026, 'Guide to MySQL 5.5', 2008),
    (11041, 'Inside VC++', 2011);

    CREATE TABLE authors
    (
      auth_id     INT NOT NULL PRIMARY KEY,
      auth_name  VARCHAR(20),
     auth_gender CHAR(1)
    );


    INSERT INTO authors  
    VALUES (1001, 'WriterX' ,'f'),
    (1002, 'WriterA' ,'f'),
    (1003, 'WriterB' ,'m'),
    (1004, 'WriterC' ,'f'),
    (1011, 'WriterD' ,'f'),
    (1012, 'WriterE' ,'m'),
    (1013, 'WriterF' ,'m'),
    (1014, 'WriterG' ,'f'),
    (1015, 'WriterH' ,'f');

    CREATE TABLE authorbook
    (
      auth_id  INT NOT NULL,
      bk_id   INT NOT NULL,
      PRIMARY KEY (auth_id, bk_id),
      FOREIGN KEY (auth_id) REFERENCES authors (auth_id),
      FOREIGN KEY (bk_id) REFERENCES books (bk_id)
    );

    INSERT INTO authorbook
    VALUES (1001, 11033), (1002, 11035), (1003, 11072), (1004, 11028),
    (1011, 11078), (1012, 11026), (1012, 11041), (1014, 11069);

首先创建一个文件夹,如我创建的是在  /mysql/dump文件夹下面:备份的内容就往文件夹里面怼,利用输出重定向。

1、使用mysqldump命令备份数据库中的所有表

[root@redhat dump]# mysqldump -uroot -p123 -a booksDB > /mysql/dump/booksDB.sql
  

 2、备份booksDB数据库中的books表

[root@redhat dump]# mysqldump -uroot -p123 -a booksDB books > /mysql/dump/books_tab_books.sql
  

 3、使用mysqldump备份booksDB和test数据库

[root@redhat dump]# mysqldump -uroot -p123 --databases booksDB test1 > /mysql/dump/booksDB_and_test1DB
.sql
 

   4、使用mysqldump备份服务器中的所有数据库

[root@redhat dump]# mysqldump -uroot -p --all-databases  > /mysql/dump/all_DB.sql


    5、使用mysql命令还原第二题导出的book表(利用输入重定向)

[root@redhat dump]# mysqldump -uroot -p booksDB  < /mysql/dump/books_tab_books.sql
Enter password:
-- MySQL dump 10.13  Distrib 5.7.41, for Linux (x86_64)
--
-- Host: localhost    Database: booksDB
-- ------------------------------------------------------
-- Server version       5.7.41

    6、进入数据库使用source命令还原第二题导出的book表

[root@redhat dump]# mysql -u root -p -e 'source /mysql/dump/books_tab_books.sql'

第二: 索引

1.索引的优势

  1. 提高查询率(降低IO使用率)
  2. 降低cpu使用率

2.索引的弊端

        1. 索引本身很大,可以存放在内存或硬盘上,通常存储在硬盘上

        2.索引不是所有情况都使用

        3.索引会降低增删改的效率 

3.索引的分类

        1.单值索引

        2.唯一索引

        3.联合索引

        4.主键索引

唯一索引和主键索引的区别:主键索引不能为NULL

题目:

1、建立一个utf8编码的数据库test1
    2、建立商品表goods和栏目表category
    按如下表结构创建表:存储引擎engine myisam 字符集charset utf8

mysql> create table goods(
    -> good_id int(11)  primary key,
    -> goods_name varchar(20) not null,
    -> cat_id int(11) not null default 0,
    -> brand_id int(11) not null default 0,
    -> goods_sn char(12) not null,
    -> shop_price float(6,2) not null default 0.00,
    -> goods_desc text default NULL
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> desc  goods;
+------------+-------------+------+-----+---------+-------+
| Field      | Type        | Null | Key | Default | Extra |
+------------+-------------+------+-----+---------+-------+
| good_id    | int(11)     | NO   | PRI | NULL    |       |
| goods_name | varchar(20) | NO   |     | NULL    |       |
| cat_id     | int(11)     | NO   |     | 0       |       |
| brand_id   | int(11)     | NO   |     | 0       |       |
| goods_sn   | char(12)    | NO   |     | NULL    |       |
| shop_price | float(6,2)  | NO   |     | 0.00    |       |
| goods_desc | text        | YES  |     | NULL    |       |
+------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

 修改索引存储引擎

mysql> alter table goods engine=myisam;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

 3.删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段 

删除:

mysql> alter table goods drop goods_desc;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

添加:
mysql> alter table goods add click_count int;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

查看

mysql> desc goods;
+-------------+-------------+------+-----+---------+-------+
| Field       | Type        | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+-------+
| good_id     | int(11)     | NO   | PRI | NULL    |       |
| goods_name  | varchar(20) | NO   |     | NULL    |       |
| cat_id      | int(11)     | NO   |     | 0       |       |
| brand_id    | int(11)     | NO   |     | 0       |       |
| goods_sn    | char(12)    | NO   |     | NULL    |       |
| shop_price  | float(6,2)  | NO   |     | 0.00    |       |
| click_count | int(11)     | YES  |     | NULL    |       |
+-------------+-------------+------+-----+---------+-------+
7 rows in set (0.00 sec)

 4、在 goods_name 列上加唯一性索引(用alter table方式) 

mysql> alter table goods add unique index (goods_name(20));
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table goods\G;
*************************** 1. row ***************************
       Table: goods
Create Table: CREATE TABLE `goods` (
  `good_id` int(11) NOT NULL,
  `goods_name` varchar(20) NOT NULL,
  `cat_id` int(11) NOT NULL DEFAULT '0',
  `brand_id` int(11) NOT NULL DEFAULT '0',
  `goods_sn` char(12) NOT NULL,
  `shop_price` float(6,2) NOT NULL DEFAULT '0.00',
  `click_count` int(11) DEFAULT NULL,
  PRIMARY KEY (`good_id`),
  UNIQUE KEY `goods_name_index` (`goods_name`),
  UNIQUE KEY `goods_name` (`goods_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

ERROR:
No query specified


    5、在 shop_price 列上加普通索引(用create index方式)

mysql> create index g_price_index on goods(shop_price);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> show create table goods\G;
*************************** 1. row ***************************
       Table: goods
Create Table: CREATE TABLE `goods` (
  `good_id` int(11) NOT NULL,
  `goods_name` varchar(20) NOT NULL,
  `cat_id` int(11) NOT NULL DEFAULT '0',
  `brand_id` int(11) NOT NULL DEFAULT '0',
  `goods_sn` char(12) NOT NULL,
  `shop_price` float(6,2) NOT NULL DEFAULT '0.00',
  `click_count` int(11) DEFAULT NULL,
  PRIMARY KEY (`good_id`),
  UNIQUE KEY `goods_name_index` (`goods_name`),
  UNIQUE KEY `goods_name` (`goods_name`),
  KEY `g_price_index` (`shop_price`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

ERROR:
No query specified


    6、在 click_count 上增加普通索引,然后再删除 (分别使用drop index和alter table删除)

mysql> alter table goods add index c_l_index (click_count);
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table goods drop index c_l_index;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> drop index c_l_index on goods;

第三题:视图

使用视图的原因


1)简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。

2)安全:使用视图的用户只能访问他们被允许查询的结果集,对表的权限管理并不能限制到某个行某个列,但是通过视图就可以简单的实现。

3)数据独立:一旦视图的结构确定了,可以屏蔽表结构变化对用户的影响,源表增加列对视图没有影响;源表修改列名,则可以通过修改视图来解决,不会造成对访问者的影响。

总而言之,使用视图的大部分情况是为了保障数据安全性,提高查询效率。

基本格式:

CREATE VIEW <视图名> AS <SELECT语句>

视图练习题:

创建表:

Student表
mysql> create table Student(
    -> Sno int primary key auto_increment,
    -> Sname varchar(20) not null,
    -> Ssex char(1),
    -> Sage int,
    -> Sdept varchar(20)
    -> );
Course表
mysql> create table Course(
    -> Cno int primary key auto_increment,
    -> Cname varchar(50)
    -> );
mysql> create table SC( Sno int , Cno int primary key auto_increment ,Score float(6,2));
 

 插入数据
mysql> insert into Student values(
    -> 1,'bob','m',20,'人工智能');
mysql> insert into Student values( 2,'harry','m',22,'电气信息');
mysql> insert into Student values( 3,'natasha','f',23,'电气信息');
mysql> insert into Student values( 4,'sarah','m',21,'人文');
mysql> insert into Student values( 5,'manalo','f',21,'艺术');

+-----+---------+------+------+--------------+
| Sno | Sname   | Ssex | Sage | Sdept        |
+-----+---------+------+------+--------------+
|   1 | bob     | m    |   20 | 人工智能     |
|   2 | harry   | m    |   22 | 电气信息     |
|   3 | natasha | f    |   23 | 电气信息     |
|   4 | sarah   | m    |   21 | 人文         |
|   5 | manalo  | f    |   21 | 艺术         |
+-----+---------+------+------+--------------+

mysql> insert into Course values( 10,'JAVA');
mysql> insert into Course values( 11,'英语');
mysql> insert into Course values( 12,'近代史');
mysql> insert into Course values( 13,'C++');
mysql> insert into Course values( 14,'毛概');
+-----+-----------+
| Cno | Cname     |
+-----+-----------+
|  10 | JAVA      |
|  11 | 英语      |
|  12 | 近代史    |
|  13 | C++       |
|  14 | 毛概      |
+-----+-----------+

mysql> insert into SC values(1,10,78.5);
mysql> insert into SC values(2,11,82.5);
mysql> insert into SC values(3,14,90.0);
mysql> insert into SC values(4,13,98.5);
mysql> insert into SC values(5,12,75.5);
+-----+------+-------+
| Sno | Cno  | Score |
+-----+------+-------+
|   1 |   10 | 78.50 |
|   2 |   11 | 82.50 |
|   3 |   14 | 90.00 |
|   4 |   13 | 98.50 |
|   5 |   12 | 75.50 |
+-----+------+-------+
 

 创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩

create view stu_co_info as select s.Sname,s.Ssex,co.Cname,c.Score from Student s , SC c ,Course co where s.Sno=c.Sno and c.Cno=co.Cno;
#
mysql> select * from stu_co_info;
+---------+------+-----------+-------+
| Sname   | Ssex | Cname     | Score |
+---------+------+-----------+-------+
| bob     | m    | JAVA      | 78.50 |
| harry   | m    | 英语      | 82.50 |
| manalo  | f    | 近代史    | 75.50 |
| sarah   | m    | C++       | 98.50 |
| natasha | f    | 毛概      | 90.00 |
+---------+------+-----------+-------+
 

 删除视图:

mysql> drop view stu_co_info;
mysql> select * from stu_co_info;
ERROR 1146 (42S02): Table 'test.stu_co_info' doesn't exist

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/37155.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【新手上路】如何在Web3时代成为XR创建者

目录 0 XR在Web3里的作用 1 XR的概念、特征、技术、设备、平台、应用和工具 1.1 VR的概念、特征和技术 1.2 AR的概念、特征和技术 1.2 XR的设备、平台、应用和工具 2 选择XR的方法 2.1 何时使用VR 2.2 何时使用AR 3 开发XR作品的4个步骤 4 成为XR构建者的路径 4.1 三…

Win10使用gdc-client下载TCGA数据集【安装使用教程】成功解决闪退问题!

做实验需要下载TCGA数据集&#xff0c;数据量比较大的时候&#xff0c;直接从网页下载速度非常慢&#xff0c;容易出现下载不全等情况。 调研后选择在Win10端使用gdc-client来帮助下载Cart文件。 一、下载软件、配置环境 下载软件 下载网站链接&#xff1a;https://gdc.can…

解决dotnet调用https请求被中止未能创建SSL/TLS安全通道

环境:dotnet4.7.2/winserver2012 问题描述: 调用https出现请求被中止,未能创建SSL/TLS安全通道 第一试 自定义SetCertificatePolicy 函数&#xff0c;在建立http连接之前调用 SetCertificatePolicy 函数。 public static void SetCertificatePolicy() {ServicePointManage…

实战攻防之积极防御体系建设 | 中睿天下受邀参与诸子云沙龙

7月8日&#xff0c;中睿天下受邀参与由诸子云举办的“网络与数据安全”主题沙龙&#xff0c;中睿天下技术经理徐丹丹就《实战攻防之积极防御体系建设》这一主题进行了分享交流。 本次沙龙由南京分会会长宋士明主持&#xff0c;活动邀请到BASF、江苏省联社、华泰证券、宁证期货、…

工作日志2 input 的事件优先级 字符串.trim() this.$set()的应用 获取jq的自定义属性

input 的事件优先级 1.input输入框的事件 字符串.trim() 除去前后空格的方法 undefind不可以使用 this.$set()的应用

记录jeecg-boot及a-table前端问题

标签页重复 原因&#xff1a; 在TabLayout中它有监听$route&#xff0c;是根据route.fullpath去判断的。这就会出现一种情况&#xff0c;我是同一个path比如/detail,但是我带了个参数/detail?id132165151651和/detail?id256151561651这两个fullpath明显不同&#xff0c;所以…

单片机能否替代PLC实现控制和自动化系统?

是的&#xff0c;单片机可以在某些情况下替代PLC&#xff0c;但在其他情况下可能并不适用。以下是对这个问题的详细解释&#xff1a; 我这里刚好有嵌入式、单片机、plc的资料需要可以私我或在评论区扣个6 灵活性和可编程性&#xff1a;PLC相对于单片机来说更具有灵活性和可编…

k8s 持久化存储

我们继续来查看 k8s 的卷&#xff0c;上一次我们分享了将磁盘挂载到容器中&#xff0c;empyDir 和 gitRepo 都是会随着 pod 的启动而创建&#xff0c;随着 pod 的删除而销毁 那么我们或许会有这样的需求&#xff0c;期望在 pod 上面读取节点的文件或者使用节点的文件系统来访问…

Linux学习之变量引用和作用范围

使用${变量名}或者$变量名就可以引用变量&#xff0c;$变量名其实是${变量名}的省略写法。 要是变量名后边还有其他字符就需要加上{}&#xff0c;比如helloToBash这个变量的值是Hello Bash&#xff0c;而需要输出的字符串是“Hello Bashing”&#xff0c;这样就需要加上{}&…

COMDEL射频电源维修康戴尔高频电源CLX2750

美国COMDEL电源维修常见型号包括&#xff1a;CLX2750&#xff1b;CLX2500&#xff1b;CLX-600H&#xff1b;CX600AS&#xff1b;CX-5000S&#xff1b;CX-3500S&#xff1b;CX-2500S&#xff1b;CV500&#xff1b;CDX2000等。 Comdel成立于1966年&#xff0c;总部设在马萨诸塞州…

设计模式-建造者模式在Java中使用示例

场景 建造者模式 复杂对象的组装与创建 没有人买车会只买一个轮胎或者方向盘&#xff0c;大家买的都是一辆包含轮胎、方向盘和发动机等多个部件的完整汽车。 如何将这些部件组装成一辆完整的汽车并返回给用户&#xff0c;这是建造者模式需要解决的问题。 建造者模式又称为…

Windows git bash输入vim报错,不能使用vim-plug插件管理器

Windows系统下的git bash在安装时自带了默认的vim&#xff0c;我自己也下了个gvim&#xff0c;并且配置了.vimrc&#xff0c;其中使用了vim-plug管理nerdtree这些插件。但是在bash中vim <file>时&#xff0c;就会蹦出来几行报错&#xff1a; 处理 /c/Users/<username…

Redis报错-CROSSSLOT keys in request don‘t hash in the same slot

背景 问题涉及&#xff1a;spring security、spring session、redis 问题描述 springbootspringsecurityspringsessionantd 登录功能的时候&#xff0c;在源码中使用到了redis的rename命令&#xff08;如下图所示&#xff09; 在这里就会报错 CROSSSLOT keys in request d…

Shell通配符和正则表达式

目录 ​​​​​​​grep 通配符 正则表达式 grep grep家族有三大成员分别为&#xff1a; grep&#xff1a;支持使用基本正则表达式。 egrep&#xff1a;支持使用扩展正则表达式。 fgrep&#xff1a;不支持使用正则表达式&#xff0c;即所有的正则表达式中的元字符都将作…

网络安全(黑客技术)自学笔记

首先给大家简单介绍一下网络安全&#xff1a; 1.什么是网络安全&#xff1f; 网络安全可以基于攻击和防御视角来分类&#xff0c;我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术&#xff0c;而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 无论网络、…

感受C++模版的所带来的魅力

一、泛型编程思想 首先我们来看一下下面这三个函数&#xff0c;如果学习过了 C函数重载 和 C引用 的话&#xff0c;就可以知道下面这三个函数是可以共存的&#xff0c;而且传值会很方便 void Swap(int& left, int& right) {int temp left;left right;right temp; }…

基于Java+Swing+Mysql影院购票系统

基于JavaSwingMysql影院购票系统 一、系统介绍二、功能展示1.用户登陆2.用户订票管理3.电影售票中心4.电影上映管理4.退票记录查询 三、数据库四、其他系统实现五、获取源码 一、系统介绍 该系统实现了查看管理员登陆、用户订票管理、电影上映管理、电影售票中心、退票记录查询…

vue的学习

title: VUE 一、Vue简介 1.1 简介 ::: tip Vue (读音 /vjuː/&#xff0c;类似于 view) 是一套用于构建用户界面的渐进式的js框架&#xff0c;发布于 2014 年 2 月。与其它大型框架不同的是&#xff0c;Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0…

我对运维初学者的几点小建议

我对运维初学者的几点小建议 在此分享一下运维的职业规划和Linux学习的路线。希望给正在做运维工作或者准备入行运维这行的同学一些启发和帮助。 首先在学习Linux之前&#xff0c;我个人其实非常建议先把计算机基础知识学习好的。这些基础十分重要&#xff0c;别看都是一些理论…

使用Lambda表达式对List<Map<String,Object>>中key值相同的Map进行分组合并

现有两张表A表和B表&#xff0c;A表存放的是各省市的认证次数&#xff0c;B表存放的是各省市的申领次数&#xff0c;重点关注dq,cs这两个字段&#xff0c;其他的字段可忽略 A表&#xff08;省市认证次数表&#xff09; B表&#xff08;省市申领次数表&#xff09; 项目中有以下…
最新文章