MySQL备份/恢复、索引、视图简述与练习

文章目录

  • MYSQL备份:
    • 物理备份:
    • 逻辑备份:
  • 索引:
    • 原理:
    • 优缺点:
  • 视图:
    • 什么是视图:
    • 作用:
    • 优点:
  • 备份与恢复练习题:
    • 创库,建表:
    • 插入数据:
    • 题目:
      • 1、使用mysqldump命令备份数据库中的所有表
      • 2、备份booksDB数据库中的books表
      • 3、使用mysqldump备份booksDB和test数据库
      • 4、使用mysql命令还原第二题导出的book表
      • 5、进入数据库使用source命令还原第二题导出的book表
  • 索引练习题:
    • 创库,建表:
    • 题目:
      • 1、修改存储引擎:
      • 2、删除 goods 表中的 goods_desc 字段及货号字段,并增加 click_count 字段
      • 3、在 goods_name 列上加唯一性索引(用alter table方式):
      • 4、在 shop_price 列上加普通索引(用create index方式)
      • 5、在 click_count 上增加普通索引,然后再删除 (分别使用drop index和alter table删除)
  • 视图练习题:
    • 创库,建表:
    • 插入数据:
    • 题目:
      • 创建一视图 stu_info,查询全体学生的姓名,性别,课程名,成绩:
      • 删除视图:

MYSQL备份:

物理备份:

  1. 热备:
    数据库处于运行状态,依赖于数据库的日志文件,热备时可以进行读写。
  2. 温备:
    数据库会锁定表格,仅可以进行读。
  3. 冷备:
    是在关闭数据库的时候进行的,读写都不可以。

物理备份的优缺点: 物理备份的还原速度⾮常快。但是物理备份的最⼩粒度只能做到表。

逻辑备份:

  1. 完全备份:
    备份全部数据
  2. 增量备份:
    仅备份上次完全备份或增量备份以后变化的数据
  3. 差异备份:
    仅备份上次完全备份以来变化的数据

逻辑备份的优缺点:
逻辑备份有⾮常强的兼容性,⽽物理备份则对版本要求⾮常⾼ 逻辑备份也对保持数据的安全性有保证。
逻辑备份要对RDBMS产⽣额外的压⼒,且逻辑备份的结果可能要⽐源⽂件更⼤,逻辑备份还可能会丢失浮点数的精度信息。

索引:

原理:

把创建索引的列的内容进行排序并生成倒序表,然后在倒序表内容后拼接上数据地址链,在查询时先拿出倒序表内容再拿到数据链地址,最后拿到具体数据。

优缺点:

优点:索引的优点是可以提⾼检索数据的速度。
缺点:创建和维护索引需要耗费时间,耗费时间的数量随着数据量的增加⽽增加,且索引需要占用物理空间。

视图:

什么是视图:

视图通过以定制的⽅式显⽰来⾃⼀个或多个表的数据 视图是⼀种数据库对象,⽤⼾可以像查询普通表⼀样查询视图 视图内其实没有存储任何数据 ,它只是对表的⼀个查询 视图的定义保存在数据字典内,创建视图所基于对表称为“基表”。

视图是一个虚拟表,其内容由查询定义。数据库中只存放了视图的定义,而并没有存放视图中的数据,这些数据存放在原来的表中。

作用:

使操作简单化
增加数据的安全性
视图只能看到查询语句定义的相关内容,而其他的表结构及内容是看不到的。

优点:

提供了灵活⼀致级别安全性。
隐藏了数据的复杂性
简化了⽤⼾的SQL指令
通过重命名列,从另⼀个⻆度提供数据

备份与恢复练习题:

创库,建表:

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
);CREATE TABLE authors
(
auth_id     INT NOT NULL PRIMARY KEY,
auth_name  VARCHAR(20),
auth_gender CHAR(1)
);CREATE TABLE authorbook
(
auth_id  INT NOT NULL,
bk_id   INT NOT NULL
);

插入数据:

INSERT INTO booksVALUES (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);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');INSERT INTO authorbookVALUES (1001, 11033), (1002, 11035), (1003, 11072), (1004, 11028),(1011, 11078), (1012, 11026), (1012, 11041), (1014, 11069);

题目:

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

mysqldump  -B -uroot -proot booksDB > /root/mysql/all_tables.sql

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

mysqldump  -uroot -proot booksDB books > /root/mysql/table_books.sql

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

mysqldump -uroot -p --databases booksDB test >/root/mysql/books_test_DB.sql
Enter password:

4、使用mysql命令还原第二题导出的book表

[root@node1 ~]# mysql -u root -p booksDB</root/mysql/table_books.sql
Enter password: 
mysql> select * from books;
+-------+--------------------------+-----------+
| bk_id | bk_title                 | copyright |
+-------+--------------------------+-----------+
| 11026 | Guide to MySQL 5.5       |      2008 |
| 11028 | Learing C++              |      2005 |
| 11033 | Study Html               |      2011 |
| 11035 | How to use php           |      2003 |
| 11041 | Inside VC++              |      2011 |
| 11069 | MySQL professional       |      2009 |
| 11072 | Teach youself javascript |      2005 |
| 11078 | Learning MySQL           |      2010 |
+-------+--------------------------+-----------+

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

mysql> drop table books;
mysql> source /root/mysql/table_books.sql
mysql> select * from books;
+-------+--------------------------+-----------+
| bk_id | bk_title                 | copyright |
+-------+--------------------------+-----------+
| 11026 | Guide to MySQL 5.5       |      2008 |
| 11028 | Learing C++              |      2005 |
| 11033 | Study Html               |      2011 |
| 11035 | How to use php           |      2003 |
| 11041 | Inside VC++              |      2011 |
| 11069 | MySQL professional       |      2009 |
| 11072 | Teach youself javascript |      2005 |
| 11078 | Learning MySQL           |      2010 |
+-------+--------------------------+-----------+

索引练习题:

创库,建表:

mysql> create table goods(-> goods_id int primary key auto_increment,-> goods_name varchar(20) not null,-> cat_id int not null default 0,-> brand_id int not null default 0,-> goods_sn char(12) not null,-> shop_price float(6,2) not null default 0.00,-> goods_desc text -> );mysql> create table category( cat_id int primary key auto_increment, cate_name varchar(20), parent_id int default 0 );

题目:

1、修改存储引擎:

mysql> alter table goods engine=myisam;
mysql> alter table category engine=myisam;

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

mysql> alter table goods drop column goods_desc;
mysql> alter table goods drop column goods_sn;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| goods_id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| goods_name  | varchar(20) | NO   | UNI | NULL    |                |
| cat_id      | int(11)     | NO   |     | 0       |                |
| brand_id    | int(11)     | NO   |     | 0       |                |
| shop_price  | float(6,2)  | NO   |     | 0.00    |                |
+-------------+-------------+------+-----+---------+----------------+mysql> alter table goods add click_count int;
+-------------+-------------+------+-----+---------+----------------+
| Field       | Type        | Null | Key | Default | Extra          |
+-------------+-------------+------+-----+---------+----------------+
| goods_id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| 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    |                |
+-------------+-------------+------+-----+---------+----------------+

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

mysql> alter table goods add unique index goods_name_index (goods_name(20));
mysql> show create table goods\G;
*************************** 1. row ***************************Table: goods
Create Table: CREATE TABLE `goods` (`goods_id` int(11) NOT NULL AUTO_INCREMENT,`goods_name` varchar(20) NOT NULL,`cat_id` int(11) NOT NULL DEFAULT '0',`brand_id` int(11) NOT NULL DEFAULT '0',`shop_price` float(6,2) NOT NULL DEFAULT '0.00',`click_count` int(11) DEFAULT NULL,PRIMARY KEY (`goods_id`),UNIQUE KEY `goods_name_index` (`goods_name`),
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

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

mysql> create index g_price_index on goods(shop_price);
mysql> show create table goods\G;
*************************** 1. row ***************************Table: goods
Create Table: CREATE TABLE `goods` (`goods_id` int(11) NOT NULL AUTO_INCREMENT,`goods_name` varchar(20) NOT NULL,`cat_id` int(11) NOT NULL DEFAULT '0',`brand_id` int(11) NOT NULL DEFAULT '0',`shop_price` float(6,2) NOT NULL DEFAULT '0.00',`click_count` int(11) DEFAULT NULL,PRIMARY KEY (`goods_id`),UNIQUE KEY `goods_name_index` (`goods_name`),KEY `g_price_index` (`shop_price`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

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

mysql> alter table goods add index c_l_index (click_count);
mysql> show create table goods\G;
*************************** 1. row ***************************Table: goods
Create Table: CREATE TABLE `goods` (`goods_id` int(11) NOT NULL AUTO_INCREMENT,`goods_name` varchar(20) NOT NULL,`cat_id` int(11) NOT NULL DEFAULT '0',`brand_id` int(11) NOT NULL DEFAULT '0',`shop_price` float(6,2) NOT NULL DEFAULT '0.00',`click_count` int(11) DEFAULT NULL,PRIMARY KEY (`goods_id`),UNIQUE KEY `goods_name_index` (`goods_name`),KEY `g_price_index` (`shop_price`),KEY `c_l_index` (`click_count`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4mysql> alter table goods drop index c_l_index;
mysql> drop index c_l_index on goods;mysql> show create table goods\G;
*************************** 1. row ***************************Table: goods
Create Table: CREATE TABLE `goods` (`goods_id` int(11) NOT NULL AUTO_INCREMENT,`goods_name` varchar(20) NOT NULL,`cat_id` int(11) NOT NULL DEFAULT '0',`brand_id` int(11) NOT NULL DEFAULT '0',`shop_price` float(6,2) NOT NULL DEFAULT '0.00',`click_count` int(11) DEFAULT NULL,PRIMARY KEY (`goods_id`),UNIQUE KEY `goods_name_index` (`goods_name`),KEY `g_price_index` (`shop_price`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4

视图练习题:

创库,建表:

#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)-> );
#SC
mysql> create table SC( Sno int , Cno int primary key auto_increment ,Score float(6,2));

插入数据:

#Student
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 | 艺术         |
+-----+---------+------+------+--------------+
#Course
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 | 毛概      |
+-----+-----------+
#SC
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.mzph.cn/news/2940.shtml

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

相关文章

python系列教程210——嵌套lambda

朋友们&#xff0c;如需转载请标明出处&#xff1a;https://blog.csdn.net/jiangjunshow 声明&#xff1a;在人工智能技术教学期间&#xff0c;不少学生向我提一些python相关的问题&#xff0c;所以为了让同学们掌握更多扩展知识更好地理解AI技术&#xff0c;我让助理负责分享…

人工智能大语言模型微调技术:SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法

人工智能大语言模型微调技术&#xff1a;SFT 监督微调、LoRA 微调方法、P-tuning v2 微调方法、Freeze 监督微调方法 1.SFT 监督微调 1.1 SFT 监督微调基本概念 SFT&#xff08;Supervised Fine-Tuning&#xff09;监督微调是指在源数据集上预训练一个神经网络模型&#xff…

HTML5 Canvas API制作一个简单的猜字单机游戏

这篇文章主要介绍了借助HTML5 Canvas API制作一个简单的猜字单机游戏的实例分享,游戏中每局会自动生成一个字母,玩家按键盘来猜测该字母是哪一个,需要的朋友可以参考下 HTML代码 <!doctype html> <html lang"en"> <head> <met…

听GPT 讲K8s源代码--pkg(六)

pkg/kubelet/cm 目录是 Kubernetes 源代码中的一个目录&#xff0c;包含了 kubelet 组件中的 ConfigMap 相关代码。 在 Kubernetes 中&#xff0c;ConfigMap 是一种用于存储非机密数据的 API 对象类型&#xff0c;它可以用来存储配置信息、环境变量、命令行参数等等。 kubelet …

从脚手架搭建到部署访问路程梳理

1、vue-cli 起文件&#xff1a; 2、配置 webpack &#xff1a;打包配置等&#xff0c;env文件&#xff08; 处理线上和测试的ip&#xff09;&#xff0c; https://www.ibashu.cn/news/show_377892.html 3、样式&#xff1a;封装 style &#xff1a;组件&#xff08;element-u…

没有上司的舞会

题目 题目链接&#xff1a;285.没有上司的舞会 Ural 大学有 N 名职员&#xff0c;编号为 1∼N。 他们的关系就像一棵以校长为根的树&#xff0c;父节点就是子节点的直接上司。 每个职员有一个快乐指数&#xff0c;用整数 Hi 给出&#xff0c;其中 1≤i≤N。 现在要召开一场…

Effective Java笔记(16)要在公有类而非公有域中使用访问方法

有时候&#xff0c;可能需要编写一些退化类&#xff0c;它们没有什么作用&#xff0c;只是用来集中实例域 &#xff1a; class Point {public double x;public double y; }由于这种类的数据域是可以被直接访问的&#xff0c;这些类没有提供封装&#xff08; encapsulation &am…

探索 Scikit-learn:Python 机器学习初级篇

Scikit-learn 是 Python 中最著名的机器学习库之一&#xff0c;它提供了大量实用的机器学习算法以及相关的工具&#xff0c;可以方便我们进行数据挖掘和数据分析。在这篇文章中&#xff0c;我们将介绍 Scikit-learn 的基本使用&#xff0c;包括如何导入数据、预处理数据、选择和…

Twisted Circuit

题目描述 输入格式 The input consists of four lines, each line containing a single digit 0 or 1. 输出格式 Output a single digit, 0 or 1. 题意翻译 读入四个整数 00 或者 11&#xff0c;作为如图所示的电路图的输入。请输出按照电路图运算后的结果。 感谢PC_DOS …

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测

时序预测 | MATLAB实现Hamilton滤波AR时间序列预测 目录 时序预测 | MATLAB实现Hamilton滤波AR时间序列预测预测效果基本介绍程序设计参考资料预测效果 基本介绍 预测在很大程度上取决于适合周期的模型和所采用的预测方法,就像它们依赖于过滤器提取的周期一样。标准 Hodrick-P…

Python教程(4)——Python开发工具PyCharm的下载与安装

PyCharm是一种专业的Python集成开发环境&#xff08;IDE&#xff09;&#xff0c;由JetBrains公司开发和维护。它提供了丰富的功能和工具&#xff0c;帮助开发人员更高效地编写、调试和测试Python代码。如果是一些大型Python项目强烈推荐用这个来开发。今天我们来介绍一下PyCha…

nginx系列第八篇:Ubuntu下验证nginx各请求处理阶段

Nginx处理请求的过程一共划分为11个阶段&#xff0c;按照执行顺序依次是 post-read、server-rewrite、find-config、rewrite、post-rewrite、preaccess、access、post-access、try-files、content 以及 log。 准备工作&#xff1a;host文件加入测试域名 sudo vi /etc/hosts 加入…

matlab: cell合并/拼接 数组/array/matrix 去重

1. cell合并/拼接 字符串、向量、矩阵、cell数组拼接 cell1{[1,1],[2,1,1]}; cell2{[2,2],[2,1,1,5]}; res[cell1,cell2];%列拼接 res[cell1;cell2];%行拼接2. 数组/array/matrix 去重 数组或矩阵中的去除重复元素 另参考 string比较 % 第一种方法 r_integer [1,3,2,2,2,…

C语言--程序环境和预处理

翻译环境 C语言的代码是文本信息&#xff0c;对于计算机来说无法直接理解&#xff0c;需要通过翻译环境进行翻译成二进制信息&#xff1b; 我们在写代码的时候&#xff0c;一般都会写在一个源文件中&#xff0c;这时候我们就使用我们的编译器(VS)将其转换为机器代码&#xff0…

Android应用启动全流程分析(源码深度剖析)

作者&#xff1a;努比亚技术团队 源码来源&#xff1a;努比亚技术团队 1.前言 从用户手指点击桌面上的应用图标到屏幕上显示出应用主Activity界面而完成应用启动&#xff0c;快的话往往都不需要一秒钟&#xff0c;但是这整个过程却是十分复杂的&#xff0c;其中涉及了Android系…

TortoiseGit 入门指南13:拣选

对于多分支的代码库&#xff0c;将代码从一个分支转移到另一个分支是常见需求。 这时分两种情况。一种情况是&#xff0c;你需要另一个分支的所有代码变动&#xff0c;那么就采用 合并&#xff08;merge&#xff09;。另一种情况是&#xff0c;你只需要部分代码变动&#xff0…

Android 11以下DialogFragment里弹出PopWindow显示问题

最近在写UI的时候发现一个非常有意思的事情&#xff0c;Android 11以下在DialogFragment里面弹出PopWindow&#xff0c;最终会被截取。 尝试过一些方法以后将解决方案做一个记录&#xff1a; mPopWindow.setClippingEnabled(false); 应该是Android 11后这里默认设置成了true…

Rust学习-构建命令行程序

Rust 的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择 本文以实现一个minigrep为例&#xff0c;展开对之前学习的回归 初版 接收命令行参数并打印文件内容 // 当所需函数嵌套了多于一层模块时&#xff0c;通常将父模块引入作用域 // std…

[JVM] 2. 类加载子系统(1)-- 内存结构、类加载子系统概述

一、内存结构 类加载子系统的职责是&#xff1a;加载class文件到内存中。 完整的内存结构如下&#xff1a; 二、类加载过程 类加载过程总体分为Loading&#xff08;加载&#xff09;、Linking&#xff08;链接&#xff09;、Initialization&#xff08;初始化&#xff09;三…

Mars3d采用ellipsoid球实现模拟地球旋转效果

1.Mars3d采用ellipsoid球实现模拟地球旋转效果 2.开始自选装之后&#xff0c;模型一直闪烁 http://mars3d.cn/editor-vue.html?idgraphic/entity/ellipsoid 3.相关代码&#xff1a; import * as mars3d from "mars3d"export let map // mars3d.Map三维地图对象 …