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

这篇具有很好参考价值的文章主要介绍了MySQL的数据备份与还原--练习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

MySQLdump

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

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

 看题:

第一题:

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文章来源地址https://www.toymoban.com/news/detail-581609.html

到了这里,关于MySQL的数据备份与还原--练习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL 数据库的备份与还原案例分享 2023.07.12

        1、使用mysqldump命令备份数据库中的所有表     2、备份booksDB数据库中的books表     3、使用mysqldump备份booksDB和test数据库     4、使用mysqldump备份服务器中的所有数据库     5、使用mysql命令还原第二题导出的book表     6、进入数据库使用source命令还原第二题导出的bo

    2024年02月16日
    浏览(52)
  • 开源数据库Mysql_DBA运维实战 (备份与还原)

    备份对于数据库而言是至关重要的。当数据文件发生损坏、MySQL服务出现错误、系统内核崩溃、计算机硬件损坏或者数据被误删等事件时,使用一种有效的数据备份方案,就可以快速解决以上所有的问题。MySQL提供了多种备份方案,包括: 逻辑备份、物理备份、全备份以及增

    2024年02月12日
    浏览(73)
  • 【MySQL】数据库的增删改查、备份、还原等基本操作

    大写的表示 [] 是可选项 CHARACTER SET: 指定数据库采用的字符集 COLLATE: 指定数据库字符集的校验规则 创建数据库的时候,有两个编码集: 1.数据库编码集——数据库未来存储数据 2.数据库校验集——支持数据库进行字段比较使用的编码,本质也是一种读取数据库中数据采

    2024年02月08日
    浏览(78)
  • MySQL:数据库练习题-1

    表一:employees 表二:salary 表三:departments 练习题及答案: ---1、查询empioyees表的员工部门号和性别,要求消除重复行 ---2、计算每个雇员的实际收入(实际收入=收入-支出) ---3、查询employees表中的姓名和性别,要求性别值为1时显示为“男”,为0时显示为“女” ---4、查询每

    2024年02月04日
    浏览(53)
  • MySQL:关于数据库的一些练习题

    前面的内容已经把数据库的一些必要知识已经储备好了,因此下面就对于这些语句进行一些练习: 批量插入数据 SQL202 找出所有员工当前薪水salary情况 SQL195 查找最晚入职员工的所有信息 SQL196 查找入职员工时间排名倒数第三的员工所有信息 SQL201 查找薪水记录超过15条的员工

    2024年04月17日
    浏览(37)
  • 数据备份和还原的简单操作

    两个表如图所示,完成一下操作 1、使用mysqldump命令备份数据库中的所有表 先创建存储数据的目录 使用mysqldump命令备份数据库中的所有表 去查看已经备份 2、备份booksDB数据库中的books表 备份数据库中的某些表,在库后面空格间隔 备份完毕 3、使用mysqldump备份booksDB和test数据库

    2024年02月15日
    浏览(37)
  • SQLServer数据库备份与还原

            Microsoft SQL Server Management Studio,顾名思义,是微软 SQL Server的管理工具,说白了,就是微软官方管理自家数据库的软件。可以对数据库和表操作,本章我们用到它强悍的备份和还原功能。       (1)  选中需要备份的数据库,右键选择备份   (2)添加目标 (3)此

    2024年02月13日
    浏览(47)
  • 达梦数据库的备份和还原

    简要介绍一下达梦数据库备份还原的概念以及如何进行备份还原及故障恢复。 物理备份:拷贝有效数据页。 联机备份 联机即在数据库运行状态下进行备份,必须开归档模式,支持库备份、表空间备份、表备份、归档备份·。它包括完全备份(拷贝所有有效数据页)和增量备

    2024年02月02日
    浏览(51)
  • 达梦数据库的备份与还原

    目录 一、物理备份还原 1、冷备 (1)使用DM控制台工具console备份 (2)使用dmrman工具进行备份 2、热备 (1)开启归档 (2)联机备份 3、还原恢复 (1)表联机还原,需要通过执行sql语句还原 (2)DM控制台工具还原,需要关闭数据库服务 (3)dmrman工具,需要关闭数据库服务

    2024年02月03日
    浏览(40)
  • 数据分析| Pandas200道练习题,使用Pandas连接MySQL数据库

    通过pandas实现数据库的读,写操作时,首先需要进行数据库的连接,然后通过调用pandas所提供的数据库读写函数与方法来实现数据库的读写操作。 Pandas提供了3个函数用于数据库的读操作 read_sql_query() 可以实现对数据库的查询操作,但是不能直接读取数据库中的某个表,需要

    2024年01月16日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包