【MySQL】库的相关操作 + 库的备份和还原

news2024/10/6 7:28:01

库的操作

  • 前言
  • 正式开始
    • 创建数据库
    • 删除数据库
    • 编码集
      • 查看系统默认字符集以及校验规则
        • 字符集
        • 校验规则
      • 所有支持的字符集和校验规则
        • 所有字符集
        • 所有校验规则
      • 指明字符集和校验规则创建数据库
      • 相同的字符集用不同的校验规则读取会出现什么情况
    • alter修改数据库
      • show create database
      • alter
    • 库的备份和恢复
      • mysqldump备份整个库
      • mysqldump备份某张(某几张)表

在这里插入图片描述

前言

如果你对于数据库的一些基本概念还不太理解,可以看看我上一篇:
【MySQL】想不想知道数据库到底是啥?想了就进来看看

本篇主要讲解:
创建、删除、修改数据库。
对库做备份和还原。

正式开始

本来是不向给出下面这张图的:
在这里插入图片描述

因为我觉得新手根本就没法理解,而且还容易被这种一大堆括号的东西吓到,但是这里还是给出来,不过我不会照着这个讲,我按照更容易理解的方式来走。

创建数据库

先简单介绍一下基本操作,等会再讲细节。

create database xxx;

注意,sql语句大写小写都是可以的,不要认为只能大写,我后面全用小写来讲。

在这里插入图片描述

我前一篇说过,创建一个数据库就会在配置文件给的datadir所给的路径下创建一个目录:

在这里插入图片描述

看:
在这里插入图片描述
创建数据库的时候还可以加上if not exists,作用就是判断一下有没有,没有就创建,有了就不起作用:
在这里插入图片描述

删除数据库

drop database xxx;

在这里插入图片描述

对应的也就是删除目录:
在这里插入图片描述

那么我在datadir路径下创建一个目录,那么在show databases的时候也是能看到的:
在这里插入图片描述

再删掉这个目录,对应show 的时候也就消失了:
在这里插入图片描述

但是通过手动创建目录的方式是创建不出来数据库的,虽然能用use选中数据库,但是创建不出来表。必须通过sql语句来创建数据库。

注意,删除数据库就是删目录,目录只要一删除,其中的表和数据就都没了,所以特别不推荐直接对数据库做删除操作,如果要删,必须先确定其中的数据还有没有用,以防万一也可以做一下备份(备份怎么做等会会讲到)。

编码集

创建数据库的时候会有两个编码集:字符集和校验规则。

只要有数据,存储的时候一定是要有编码格式的,数据库就主要是与数据打交道的,所以就必须非常注重编码集,编码集必须是统一的,存的时候用什么编码,取的时候就要用与之对应的编码来取。

比如说一张纸上写着一堆中文,那就必须懂中文才能懂纸上写的是啥东西,用英文来读中文是不可能读懂的。

存数据的时候看的是字符集,取数据的时候看的是校验规则。上面的这个简单的例子中,中文就是存放的数据,所以中文的语法规则就指的是字符集,用什么语言来读就是用什么校验规则,英文的校验规则(语法、单词啥的)和中文对不上,那就读不懂。

查看系统默认字符集以及校验规则

show variables like 'character_set_database'; # 查看字符集
show variables like 'collation_database'; # 查看校验规则
字符集

在这里插入图片描述
可能你执行这条语句后结果是latin1,没关系,因为我前面配置文件中设置了我的mysqld默认的编码格式为utf8:
在这里插入图片描述

再来看一下当前数据库8个变量所用的字符集:
在这里插入图片描述

关于这几个character_set,想要详细了解的可以看这篇:
关于MySQL中的8个 character_set 变量说明

校验规则

在这里插入图片描述

这里的utf8_general_ci是和utf8对应的,存的时候用utf8,取的时候用utf8_general_ci。

当前数据库中连接、创建数据库、服务的校验规则:
在这里插入图片描述

所有支持的字符集和校验规则

所有字符集

在这里插入图片描述

其中就有utf8,对应的默认校验规则就是utf8_genral_ci。

所有校验规则

非常多:
在这里插入图片描述

我也把utf8_general_ci圈出来了。

这些所有的编码集都是可选的,不过我这里默认情况下用的是utf8,等会创建数据库的时候也可以做修改。

指明字符集和校验规则创建数据库

先来一个默认字符集的:
在这里插入图片描述

我前一篇说过创建一个数据库,其中会有一个文件,但没有说这个文件中的内容是啥,这里就能知道了,就是默认的字符集和校验规则,因为创建数据库d1的时候并没有指明字符集和校验规则,所以就用的默认字符集和校验规则。

再来指明字符集和校验规则来创建:

  • 指明字符集为utf8:
    在这里插入图片描述

有多种写法:
在这里插入图片描述

中间的等号可以不加:
在这里插入图片描述

character set也是:
在这里插入图片描述

  • 指明校验规则为utf8_general_ci:
    我这里把刚刚创建出来的5个全删掉,不然影响观察。

在这里插入图片描述

也是可以不加等号,换成utf8_bin试试:
在这里插入图片描述

换成和utf8完全不相关的:
在这里插入图片描述

可以看到mysqld还是很聪明的,会自动换成匹配的字符集。

  • 指明字符集为utf8,校验规则为utf8_general_ci:
    再把刚刚的三个删掉。

在这里插入图片描述

指明utf8 和 utf8_bin
在这里插入图片描述

指明 latin1 和 latin1_bin:
在这里插入图片描述

如果指明的字符集和校验规则不匹配:
在这里插入图片描述
会出错。

相同的字符集用不同的校验规则读取会出现什么情况

下面的两个d1和d2字符集用的都是utf8,但d1的校验规则是utf8_general_ci,d2的校验规则用的是utf8_bin。
在这里插入图片描述

utf8_general_ci是不区分大小写的,但utf8_bin区分,但是光说也体会不出来,得创建两个表看看。

对数据库操作时必须先选中数据库:use db_name。

先选定d1建一张表:
在这里插入图片描述

表的相关操作我后续博客会详谈,这里先认识一下。

这里创建了一个person表,其中有一列,往里面插入点数据:
在这里插入图片描述
我往里面插入了小写的a、b、c,又插入了大写的A、B、C。

插入的本质就是存,那么存的时候用的就是字符集,select查询的时候是取,取的时候要进行对比库中的数据和你想取的数据是否一致,所以用的就是编码集。

查看一下其中的a:
在这里插入图片描述

这里查出来了两个,一个a,一个A。这就可以说明utf8_general_ci是不区分大小写的。

再来按照name升序排序:
在这里插入图片描述
排序的时候要进行比较,比较就要对其编码进行校验,所以用的是校验集,可以看到小写和大写是放在一块的,都是一样的。

再用d2做同样的工作:
在这里插入图片描述
d2却只查出来了a。所以utf8_bin区分大小写。

排序:
在这里插入图片描述

大写在前,小写在后,其实这里就是按照ASCII排的。

后面我创建库默认的字符集就是utf8,默认校验规则就是utf8_general_ci。

数据库的字符集和校验规则会间接(并非直接,你也可以再改)影响库中表的字符集和校验规则,不过这都是后话了,等我下一篇讲表的操作的时候再细说。

alter修改数据库

show create database

不过说alter之前先说一下这个:

show create database xxx; # xxx为数据库名 

这条语句可以查看你在创建xxx数据库的时候的细节(其实就是编码的细节,没有别的)。

比如说刚刚的d1和d2:
在这里插入图片描述

alter

再来说alter,一般alter操作是为了修改数据库编码的。

来改一下d1:
在这里插入图片描述

改了之后的db.opt文件:
在这里插入图片描述
show:
在这里插入图片描述

再来看看d2,改成gbk:
在这里插入图片描述

这里gbk_chinese_ci就是gbk的默认校验规则,所以没有显示。

到这里库的增(create)删(drop)查(show)改(alter)工作就已经搞完了。

下面说说库的备份和恢复

库的备份和恢复

如何在Linux中对一个文件做备份?
很简单,cp一下再重命名或者直接重命名就行。

那数据库文件也是一个文件,能不能也像普通文件那样备份呢?
不行。mysql专门给出了备份相关的操作的。

mysqldump备份整个库

 mysqldump -P3306 -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

就拿刚刚的d1来做备份。

在这里插入图片描述
注意这个路径下是空的。就备份到这个路径下面。
在这里插入图片描述

可以看到其中多了一个文件。

用vim打开,里面的内容是这样的:

在这里插入图片描述

里面保存了历史上做过的一些操作,不光是存放数据。

现在我删除掉d1:
在这里插入图片描述

现在datadir中就不存在d1这个目录了。

现在想要快速恢复出d1,怎么搞呢?
source。

在这里插入图片描述

直接source后面跟路径,就能将历史中记录的sql命令全部执行一次。

此时就d1就还原了:
在这里插入图片描述

其实上面的操作还可以搞成远端的,现在本地搞个备份,然后发送到远端的另一台主机上,这样那台主机专门用来做备份,等出现问题的时候再将备份通过远端发回来就好。

注意备份整个库的时候一定要加上-B,不然就没有备份上,备份出来的是空的。

mysqldump备份某张(某几张)表

如果备份的不是整个数据库,而是其中的一张表,怎么做?

mysqldump -u root -p 数据库名 表名1 表名2 > D:/mytest.sql

我先来再创建三张表:
在这里插入图片描述

删掉person表,此时只有这三个:
在这里插入图片描述

备份:
在这里插入图片描述

解释一下,这里因为我配置文件中设置了不需要密码,所以没有加-p。
d1就是数据库名,person、t1、t3就是表名。

如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据
库,再使用source来还原。

删掉d1数据库:
在这里插入图片描述
再创建一个空的d1:
在这里插入图片描述

注意一定要先选中数据库再进行还原,不然就出错:
在这里插入图片描述

选中后:
在这里插入图片描述

因为刚刚只备份了t1和t3,所以还原出来的只有这两张表:
在这里插入图片描述

注意,如果你备份整个数据库的时候没有加上-B,那还原的时候也得要先创建一个数据库,然后再选中这个数据库才能还原:
在这里插入图片描述

如果备份整个数据库没有加B,可以实现对数据库重命名:
在这里插入图片描述

上面用的还是刚刚d1备份的数据,但是可以直接还原到test中。

其实mysql以前是支持重命名的,但是现在不支持了。

库的操作该讲的都讲了,下一篇说表的操作。

补充一个小点:
show processlist可以显示当前数据库的连接情况。
在这里插入图片描述
这里只有我一个root用户登录。

到此结束。。。

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

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

相关文章

全国各区县平均降水月数据!多时间版本可查询

本周给大家推荐一些环境监测数据~ 今天分享的是全国平均降水数据~ 全国平均降水是指全国各个地区降水的平均值。这个值是通过收集和统计全国各地的降雨和降雪数据得出的。由于各地的气候条件和地形不同,因此全国平均降水并不是简单的平均数,而是根据各…

lora微调模版

lora微调模版 1、版一:使用peft包的lora微调(1)设置超参方式一:代码中设置(便于debug)方式二: .sh文件指定 (2)加载数据集I、对应的.jsonl或json文件, 原始格式为&#x…

【Linux】第十三站:进程状态

文章目录 一、进程状态1.运行状态2.阻塞状态3.挂起状态 二、具体Linux中的进程状态1.Linux中的状态2.R状态3.S状态4.D状态5.T、t状态6.X状态(dead)7.Z状态(zombie)8.僵尸进程总结9.孤儿进程总结 一、进程状态 在我们一般的操作系统学科中,它…

基于springboot实现家具商城管理系统项目【项目源码】

基于springboot实现家具商城系统演示 Java语言简介 Java是由SUN公司推出,该公司于2010年被oracle公司收购。Java本是印度尼西亚的一个叫做爪洼岛的英文名称,也因此得来java是一杯正冒着热气咖啡的标识。Java语言在移动互联网的大背景下具备了显著的优势…

Linux学习第41天:Linux SPI 驱动实验(二):乾坤大挪移

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本章的思维导图如下: 二、I.MX6U SPI主机驱动分析 主机驱动一般都是由SOC厂商写好的。不作为重点需要掌握的内容。 三、SPI设备驱动编写流程 1、SP…

Unity中Shader的雾效

文章目录 前言一、Unity中的雾效在哪开启二、Unity中不同种类雾的区别1、线性雾2、指数雾1(推荐用这个,兼具效果和性能)3、指数雾2(效果更真实,性能消耗多) 三、在我们自己的Shader中实现判断,是…

Java常用类和基础API

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

Spark SQL 每年的1月1日算当年的第一个自然周, 给出日期,计算是本年的第几周

一、问题 按每年的1月1日算当年的第一个自然周 (遇到跨年也不管,如果1月1日是周三,那么到1月5号(周日)算是本年的第一个自然周, 如果按周一是一周的第一天) 计算是本年的第几周,那么 spark sql 如何写 ? 二、分析 …

蓝桥杯 插入排序

插入排序的思想 插入排序是一种简单直观的排序算法,其基本思想是将待排序的元素逐个插入到已排序序列 的合适位置中,使得已排序序列逐渐扩大,从而逐步构建有序序列,最终得到完全有序的序 列。 它类似于我们打扑克牌时的排序方式&…

缅因州政府通知130万人MOVEit数据泄露事件

大家好,今天我要向大家通报一个令人震惊的消息:缅因州政府的系统遭到了入侵,黑客利用MOVEit文件传输工具的漏洞,获取了约130万人的个人信息,这几乎相当于该州的整个人口数量。 MOVEit攻击是Clop勒索软件团伙进行的一次…

数据结构(超详细讲解!!)第二十三节 树型结构

1.定义 树型结构是一类重要的非线性数据结构,是以分支关系定义的层次结构。是一种一对多的逻辑关系。 树型结构是结点之间有分支,并且具有层次关系的结构,它非常类似于自然界中的树。树结构在客观世界中是大量存在的,例如家谱、…

nginx代理docker容器服务

场景描述 避免暴力服务端口,使用nginx代理 一个前端,一个后端,docker方式部署到服务器,使用docker创建的nginx代理端口请求到前端端口 过程 1 docker 安装nginx 1.1 安装一个指定版本的nginx docker pull nginx#启动一个ngi…

【MySQL】对表结构进行增删查改的操作

表的操作 前言正式开始建表查看表show tables;desc xxx;show create table xxx; 修改表修改表名 rename to对表结构进行修改新增一个列 add 对指定列的属性做修改 modify修改列名 change 删除某列 drop 删除表 drop 前言 前一篇讲了库相关的操作,如果你不太懂&…

麒麟信安:助力医疗行业操作系统自主创新,提升可靠性与安全性

应用场景 湖南省康复医院是省卫生健康委直属公立三级康复医院,也是全省唯一一所集预防、医疗、康复、科研、教学、健康管理为一体的省级三级公立康复医院。 湖南省康复医院使用的医慧管平台由湖南蓝途方鼎科技有限公司开发,利用互联网技术,…

好题分享(2023.11.5——2023.11.11)

目录 前情回顾: 前言: 题目一:补充《移除链表元素》 题目二:《反转链表》 解法一:三指针法 解法二:头插法 题目三: 《相交链表》 题目四:《合并两个有序数列》 题目五&…

vmware 修改主机名称 hadoop 服务器环境配置(一)

如何在虚拟机配置主机名称: 1. 如图所示在/etc 文件夹下有个hosts文件。追加映射关系: #关系 ip地址 名称 192.168.164.20 hadoop20 2. 保存后,重启reboot即可

炸裂!Sklearn 的 10 个宝藏级使用方法!

大家好,本次给大家介绍10个Sklearn方法,比较小众但非常好用。 1️.FunctionTransformer 虽然Sklearn中有很多内置的预处理操作可以放进pipeline管道,但很多时候并不能满足我们的需求。 如果是比较简单并且通过一个函数可以实现需求的情况&…

考前须知-2024年上半年系统集成项目管理工程师

可以看看23年下半年软考集成考试的难度 一、考试时间安排: 集成考试一年会考2次,上半年一次、下半年一次。考试时间4h,分批进行 系统集成项目管理工程师教材共655页,分为23章。其中,前3章为信息化与系统集成基础知识的内容,第4章…

4.5 构建onnx结构模型-Reshape

前言 构建onnx方式通常有两种: 1、通过代码转换成onnx结构,比如pytorch —> onnx 2、通过onnx 自定义结点,图,生成onnx结构 本文主要是简单学习和使用两种不同onnx结构, 下面以pow 结点进行分析 方式 方法一&am…

C语言之初阶指针

一、指针: 其实按照我的理解,当我们写c语言程序的时候,创建的变量,数组等都要在内存上开辟空间。而每一个内存都有一个唯一的编号,这个编号也被称为地址编号,就相当于,编号地址指针。 二、指针…