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

news2024/11/22 19:47:53

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.coloradmin.cn/o/751444.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

开源共建,360推出WatchAD2.0域安全威胁感知系统新版本

不论是在攻防演练还是真实入侵对抗场景中&#xff0c;攻击者往往通过攻击域控获取特权管理权限进而横向控制企业内网&#xff0c;窃取重要资产和数据&#xff0c;凭借独特的管理优势&#xff0c;AD域被广泛应用于大型企业的IT基础设施的集中管理。 然而&#xff0c;传统的网络…

【手撕C语言基础】结构体(2)

(꒪ꇴ꒪(꒪ꇴ꒪ ),hello我是祐言博客主页&#xff1a;C语言基础,Linux基础,软件配置领域博主&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff01;送给读者的一句鸡汤&#x1f914;&#xff1a;集中起来的意志可以击穿顽石!作者水平很有限&#xff0c;如果发现错误…

微服务-Nacos环境安装

文章目录 1. 微服务1.1 微服务概括 2. 微服务框架2.1 Spring Cloud2.2 Spring Cloud alibaba/Spring Cloud Netflix2.3微服务框架组件(alibaba) 3 Nacos3.1 Nacos介绍3.3 Naocs工作结构3.3 Nacos功能3.4 环境准备下载安装 1. 微服务 1.1 微服务概括 单体架构有问题,所以做项目…

【uniapp开发小程序】设置开屏广告,广告图片全屏、覆盖自带胶囊导航

效果图&#xff1a; 点击跳转其他小程序&#xff1a; uni.navigateToMiniProgram() 官方文档&#xff1a;uni.navigateToMiniProgram(OBJECT) | uni-app官网 // 示例代码 uni.navigateToMiniProgram({appId: ,path: pages/index/index?id123,extraData: {data1: test},succes…

最新AI换脸替换工具离线版,一张图实现视频或者图片换脸

最新AI换脸替换工具离线版&#xff0c;一张图实现视频或者图片换脸 AI换脸替换工具离线版 基于开源项目&#xff0c;做了如下的小工具&#xff0c;给定一张人脸图&#xff0c;即可实现将某视频或者图片的人脸替换成给定的人脸。 软件操作依然很简单&#xff0c;鼠标悬停问号都…

七大排序算法——冒泡排序,通俗易懂的思路讲解与图解(完整Java代码)

文章目录 一、排序的概念排序的概念排序的稳定性七大排序算法 二、冒泡排序核心思想代码实现 三、性能分析四、七大排序算法 一、排序的概念 排序的概念 排序&#xff1a;所谓排序&#xff0c;就是使一串记录&#xff0c;按照其中的某个或某些关键字的大小&#xff0c;递增或…

Nacos注册与配置中心:使用详讲

文章目录 注册1. 引入依赖2. yaml配置设置命名空间注册信息在nacos中的内存状态总结nacos的服务注册发现机制 配置中心应用场景配置中心运行结构远程配置:1. 在本地进程添加config 依赖 和bootstrap依赖2. 需要引入一个bootstrap.yaml文件 案例练习 注册 所有组件配置步骤-大三…

面向Web开发人员的Linux实用入门(转)

从 web 开发的视角说一下在使用 Linux 时遇到的问题&#xff0c;主要是针对操作本身&#xff0c;因为指令在网上都可以查到&#xff0c;不会深入原理&#xff0c;但尽量实用。 基础认知 为什么使用 Linux 最初我使用 Linux 是因为我需要的应用在教程里只提供了 Linux 版本&a…

一、Dell服务器的iDRAC管理卡连接

Dell服务器的iDRAC管理卡图文教程 1、网线连接idrac口2、查看idrac地址3、匹配IP地址4、web登录idrac页面5、登录成功页面 带有集成戴尔远程访问控制器 &#xff08;idrac&#xff09;的系统具有默认用户名和密码&#xff0c;但您也可以使用安全密码对其进行配置。默认使用web浏…

【设计模式】简易俄罗斯转盘实现JAVA

大家好哇&#xff0c;我是梦辛工作室的灵&#xff0c;最近有些无聊&#xff0c;没得什么事情做&#xff0c;所以想再熟悉熟悉设计模式吧&#xff0c;然后就写了个俄罗斯转盘玩&#xff0c;还是老样子先看结果&#xff1a; 看上去还是不错的吧&#xff0c;最后那个只是打印&…

数学建模 插值算法

有问题 牛顿差值也有问题它们都有龙格现象&#xff0c;一般用分段插值。 插值预测要比灰色关联预测更加准确&#xff0c;灰色预测只有2次 拟合样本点要非常多&#xff0c;样本点少差值合适

Qt 桌面系统设计

文章目录 前言一、项目介绍二、界面布局三、按键图标四、桌面背景五、实现led功能总结 前言 这篇文章介绍 一个Qt 桌面系统的项目&#xff0c;大家可以在此基础上加以改进&#xff0c;实现更多的功能。 一、项目介绍 可以看到 这个桌面系统上分为两部分&#xff0c;左边是 三个…

在Linux上 USRP RIO 2944 使用 PCIe

支持的硬件 USRP-2900USRP-2901USRP-2920USRP-2921USRP-2922USRP-2930USRP-2932USRP-2940 40 MHzUSRP-2940 120 MHzUSRP-2942 40 MHzUSRP-2942 120 MHzUSRP-2943 40 MHzUSRP-2943 120 MHzUSRP-2944USRP-2945USRP-2950 40 MHzUSRP-2950 120 MHzUSRP-2952 40 MHzUSRP-2952 120 MH…

【Unity面试篇】Unity 面试题总结甄选 |算法相关 | ❤️持续更新❤️

前言 之前整理了一篇关于Unity面试题相关的所有知识点&#xff1a;2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全&#xff0c;面试题总结【全网最全&#xff0c;收藏一篇足够面试】为了方便大家可以重点复习某个模块&#xff0c;所以将各方面的知识点进行了拆分并更新整…

山西电力市场日前价格预测【2023-07-14】

日前价格预测 预测明日&#xff08;2023-07-14&#xff09;山西电力市场全天平均日前电价为315.29元/MWh。其中&#xff0c;最高日前价格为386.08元/MWh&#xff0c;预计出现在21: 45。最低日前电价为232.93元/MWh&#xff0c;预计出现在14: 45。 价差方向预测 1&#xff1a;实…

利用windows恶意软件获取windows主机shell

实验目的&#xff1a; 模拟黑客利用windows恶意软件获取windows主机shell权限的过程 熟悉操作使用的命令实验准备&#xff1a; kali 同网段的windows主机&#xff08;关闭防火墙&#xff09; msfvenom是一个Metasploit独立的有效负载生成器&#xff0c;也是msfpayload和msfenco…

【大数据之Hive】二十二、HQL语法优化之Join优化

主要控制优化使用哪种join算法。 1 Common Join Common Join是Hive中最稳定的join算法也是默认的join算法&#xff0c;其通过一个MapReduce Job完成一个join操作。Map端负责读取join操作所需表的数据&#xff0c;并按照关联字段进行分区&#xff0c;通过Shuffle&#xff0c;将…

【动手学深度学习】--01.线性回归

文章目录 线性回归1.原理1.1线性模型1.2衡量预估质量——平方损失1.3训练数据1.4参数学习1.5优化算法 2.从零开始实现线性回归2.1生成数据集2.2批量读取数据集——Mini-batch思想2.3初始化模型参数2.4定义模型2.5定义损失函数2.6定义优化算法2.7训练模型 3.借助深度学习框架实现…

关于nginx学习记录(一)

系列文章目录 第一章 Nginx 学习入门——Nginx的概述及安装 系列文章目录 一、Nginx 概述 二、安装步骤 1.下载pcre安装包,并放入linux中,进行解压: 2.pcre解压完成后,进入解压后的文件,执行./configure命令 3.在当前目录执行命令:make && make install 4.由于到…

【并发编程的艺术读书笔记】创建线程的四种方式

创建线程的四种方式 继承Thread类 public class MyThread extends Thread {Overridepublic void run() {System.out.println("MyThread...run...");}public static void main(String[] args) {// 创建MyThread对象MyThread t1 new MyThread() ;MyThread t2 new M…