【MySQL】对数据库的操作以及数据库备份相关操作

在这里插入图片描述

👦个人主页:@Weraphael
✍🏻作者简介:目前学习计网、mysql和算法
✈️专栏:MySQL学习
🐋 希望大家多多支持,咱一起进步!😁
如果文章对你有帮助的话
欢迎 评论💬 点赞👍🏻 收藏 📂 加关注✨


目录

  • 一、对数据库的操作
      • 1.1 查看数据库(查)
      • 1.2 创建数据库(增)
      • 1.3 修改数据库(改)
      • 1.4 删除数据库(删)
  • 二、数据库的备份和恢复
      • 2.1 备份
      • 2.2 恢复
      • 2.3 补充1:备份表
      • 2.4 补充2:同时备份多个数据库
      • 2.5 注意事项
  • 三、补充知识:数据库中的编码问题
      • 3.1 字符集与校验集
      • 3.2 MySQL支持多种字符集与校验集
      • 3.3 校验规则对数据库的影响
  • 四、查看连接情况

一、对数据库的操作

1.1 查看数据库(查)

【语法】

show databases

在这里插入图片描述

1.2 创建数据库(增)

【语法】

create database [数据库名]

在这里插入图片描述

  • 可选项if not exists:不存在数据库就创建, 存在则会报警告
create datebase if not exists [数据库名]

在这里插入图片描述

1.3 修改数据库(改)

在对数据库修改之前,首先需要指定数据库

use [数据库]

但是有时我们会忘记正在哪个数据库工作,因此有个方法可以查看

select databases();
# databases() - 是一个函数

需要注意的是,不建议对数据库的名字进行修改,因为数据库名称的修改会增加系统维护的复杂性。在一个复杂的环境中,可能需要同时修改多个地方来确保所有引用的数据库名称都得到更新,否则就会出现不一致性问题。


举个样例:假设要在名为Test的数据库中创建一个名为student的表

在这里插入图片描述

1.4 删除数据库(删)

【语法】

drop database  [数据库名称]

可选项if exists:检查数据库,存在才删除,删除不存在的数据库是会报警告

drop database if exists [数据库名称]

在这里插入图片描述

我们看到,执行删除之后的结果:

  • 数据库内部看不到对应的数据库
  • 对应的数据库文件夹被删除

因此,不要轻易删除数据库,否数据库删除后很难恢复,为了避免误删数据库,通常需要将数据库进行备份

二、数据库的备份和恢复

2.1 备份

假设在数据库Test下,有表student,其内容如下:

在这里插入图片描述

现在我要对Test数据库进行备份,则要使用mysqldump命令

mysqldump -P 3306 -u root -p -B [需要备份的数据库名] > [备份路径]

在这里插入图片描述

2.2 恢复

在恢复之前,我需要先将数据库Test删除掉

drop database Test;

在这里插入图片描述

然后需要使用source命令进行恢复

source [备份路径];

在这里插入图片描述

接着再查询数据库Test中的表student的信息是否还存在

在这里插入图片描述

2.3 补充1:备份表

 mysqldump -u root -p [数据库名] [表名1] [表名2] > [备份路径]

2.4 补充2:同时备份多个数据库

 mysqldump -u root -p -B [数据库名1] [数据库名2] [...] > [备份路径]	

2.5 注意事项

如果备份一个数据库时,忘记带上-B选项, 那么在恢复数据库时,需要进行以下操作:

  1. 先创建空数据库
create database [数据库];
  1. 然后使用创建的数据库
use [数据库]
  1. 最后再使用source
source [备份路径];

三、补充知识:数据库中的编码问题

3.1 字符集与校验集

当我们在创建数据库时,对应文件存储路径就会自动生成一个名为数据库的目录。(在安装MySQL时我将文件存储路径设置为/var/lib/mysql

在这里插入图片描述

当我们查看d1目录时,发现里面有一个内置的文件db.opt

在这里插入图片描述

不妨可以看看文件内容:

在这里插入图片描述

以上就是数据库的字符集检验集,用于设置数据库中的编码规则。

那什么是字符集和检验集呢?

  • 字符集用于规定存储时的编码格式

  • 校验集用于规定数据查询时的校验规则

接下来可以查看数据库默认使用的字符集与编码集

show variables like 'character_set_database';
show variables like 'collation_database';

在这里插入图片描述

当前MySQL对于数据库的默认字符集 是utf8,这是因为之前安装MySQL时我在配置文件my.cnf设置的默认字符集就是utf8;而默认的校验集则是 utf8_general_ci。这两个也是我们主流的的字符集和校验集之一。

3.2 MySQL支持多种字符集与校验集

  • 字符集
show charset;
  • 校验集
show collation;
  • 创建数据库时指定编码相关信息的语法如下
# 第一种
create database [数据库名] charset=[字符集] collate [校验集];
# 第二种
create database [数据库名] character set [字符集] collate [校验集];# 注意:
# 如果只指定字符集或者校验集其一
# 会根据字符集或者校验集推导出它的另一半

举例来说,对于UTF-8字符集,可以选择不同的校对规则,如utf8_general_ci(大小写不敏感)或utf8_bin(大小写敏感)。可以根据实际需求选择合适的字符集和校对规则,以确保数据的正确性、一致性和排序方式符合预期。

3.3 校验规则对数据库的影响

  • 首先有一个问题:为什么在MySQL中有字符集和校验集的存在呢?

字符集和校对规则在数据库中的作用主要是确保存储和处理数据的正确性、一致性和兼容性。不同的字符集和校对规则适用于不同的语言和文本数据。就比方说,你要在数据库中查询字符a,而有些校验规则是不区分大小写的,那么就会找出Aa


接下来演示utf8_general_ci(大小写不敏感)与utf8_bin(大小写敏感) 这两种不同的校验集对查询的影响

  • 创建一个数据库、建立表并往表中插入字符 【校验规则使用utf8_ general_ ci
# 创建一个数据库
create database test1 collate utf8_general_ci;
# 在修改表前需要使用对应的数据库
use test1;
# 建表
create table person(name varchar(20));
# 插入
insert into person values('a');
insert into person values('A');
insert into person values('b');
insert into person values('B');

在这里插入图片描述

  • 创建一个数据库,要求和以上一样【校验规则使用utf8_ bin
create database test2 collate utf8_bin;
use test2;
create table stu(name varchar(20));insert into stu values('a');
insert into stu values('A');
insert into stu values('b');
insert into stu values('B');

在这里插入图片描述

  • 查询操作

【不区分大小写的查询以及结果】

use test1;
select * from person where name='a';

在这里插入图片描述

【区分大小写的查询以及结果】

use test2;
select * from stu where name='a';

在这里插入图片描述

  • 对结果排序

【不区分大小写排序以及结果】

use test1;
select * from person order by name;

在这里插入图片描述

【区分大小写排序以及结果】

use test2;
select * from stu order by name;

在这里插入图片描述

不同的校验规则也就对应着不同的返回结果,因此需要对应用的需求来设置字符集和校对集,以便正确地存储和处理数据。

四、查看连接情况

当发现自己数据库比较慢时,可以用以下指令来查看数据库连接情况。它可以告诉我们当前有哪些用户连接到我们的MySQL,如果查出某个用户不是你正常登陆的,很有可能你的数据库被人入侵了。

show processlist;

在这里插入图片描述

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

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

相关文章

有ai写文案的工具吗?分享5款好用的工具!

在数字化时代,人工智能(AI)已渗透到我们生活的方方面面,包括内容创作领域。AI写文案的软件以其高效、便捷的特点,正逐渐受到广大内容创作者、营销人员、甚至普通用户的青睐。本文将为您盘点几款热门的AI写文案软件&…

NetSuite 固定资产Write-Off的撤回操作

之前我们有说到如果是Sale了固定资产后发现有误,需要撤回操作该如何处理。这篇文章来补充一下,如果是误Write-Off了一个固资该如何处理,其逻辑与Sale的撤回基本一致,但是少了删除Sale Invoice的步骤。 我们用一个实际的例子来进行…

突破编程_C++_C++11新特性(右值引用与移动语义)

1 右值引用 1.1 右值引用的基本概念 右值引用是 C11 中引入的一个关键特性,它允许程序员显式地将一个表达式标记为右值,从而可以利用移动语义进行优化。在深入探讨右值引用的基本概念之前,首先需要理解左值和右值的概念。 在 C 中&#xf…

HTML5:七天学会基础动画网页(end)

想了想还是有一点东西还没说,当然这块内容也比较简单,就是当我们有一段完整素材时,如下: 我在网上随便找的素材,当然我们平时在使用素材时要注意尊重他人的著作权,不管是字体图片还是别的,不然后面不小心侵…

字符串筛选排序 - 华为OD统一考试(C卷)

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C++ 题目描述 输入一个由n个大小写字母组成的字符串, 按照 ASCII 码值从小到大的排序规则,查找字符串中第 k 个最小ASCII 码值的字母(k>=1) , 输出该字母所在字符串的位置索引(字符串的第一个字符位置索引为0) 。…

NS3 使用 waf 工具添加外部库

我最近在写 NS3 的时候想要把他人写好的外部库添加到 NS3 中一起编译&#xff0c;在 Linux 系统中&#xff0c;添加外部库往往通过编译选项 -l<外部库名> 来添加&#xff0c;而在大型项目中往往需要把外部库写到 Makefile 文件中通过 make 来编译。奈何 NS3 的早期版本都…

org.springframework.beans.factory.BeanNotOfRequiredTypeException异常处理

目录 一、问题详情 二、示例代码 三、原因分析 四、解决方案 一、问题详情 在本地启动项目的时候,突然报了如下错误,导致整个项目启动失败了。 org.springframework.bea

【蓝桥杯备赛】Day15:递推与递归(倒计时23天)

题目1:题目 2335: 信息学奥赛一本通T1422-活动安排 设有n个活动的集合E{1,2,…,n}&#xff0c;其中每个活动都要求使用同一资源&#xff0c;如演讲会场等&#xff0c;而在同一时间内只有一个活动能使用这一资源。每个活动i都有一个要求使用该资源的起始时间si和一个结束时间fi…

【微信小程序】零基础快速入门

微信小程序 小程序与普通网页开发的区别 1 运行环境不同 网页运行在浏览器环境中 小程序运行在微信环境中2 API 不同 由于运行环境的不同,所以在小程序中,无法调用 DOM 和 BOM 的API 但是,小程序中可以调用微信环境提供的各种 API,例如:地理位置、扫码、支付等等3 开发模…

【C++】CC++内存管理

目录 一、C/C内存分布二 、C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free三、 C内存管理方式3.1 new/delete操作内置类型3.2 new和delete操作自定义类型3.3 长度域 四、operator new与operator delete函数五、new和delete的实现原理5.1 内置类型5.2 自定义类…

Lombok:@Singular集合元素灵活添加利器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、Singular介绍 二、使用示例 三、注意事项 四、使用场景 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、Singular介绍 Sing…

【LAMMPS学习】三、构建LAMMPS(7)具有额外构建选项的软件包

3. 构建 LAMMPS 3.7.具有额外构建选项的软件包 当使用某些包进行构建时&#xff0c;除了Build_package页面上描述的步骤之外&#xff0c;可能还需要额外的步骤。 ​ 对于CMake构建&#xff0c;可能有额外的可选或必需的变量要设置。对于使用make进行构建&#xff0c;可能需…

【C语言】基本语法知识C语言函数操作符详解

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;C语言_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.基本语法 1.1 代码解释 1.1.1 main()主函数 1.1.2 int 1.1.3 { } 1.1.4 printf()库函数 1.1.5 stdio.h头文件 1.2 C语言的…

ThreeJs的音频和位置音频

Threejs的场景有时候需要引入声音&#xff0c;比如下雨声音&#xff0c;撞击声音等&#xff0c;这需要用到Threejs的两个类Audio和PositionalAudio&#xff0c;第一个Audio是普通的声音&#xff0c;比如下雨&#xff0c;在整个场景中听到的都是下雨的声音&#xff0c;而且每个位…

[C语言]——操作符详解

目录 一.操作符的分类 二.二进制和进制转换 1.二进制转十进制 2.二进制转八进制和十六进制 2.1二进制转八进制 2.2二进制转十六进制 三.原码、反码、补码 四.移位操作符 1.左移操作符 2.右移操作符 五.位操作符&#xff1a;&、|、^、~ 练习1&#xff1a;编写代码实…

3d纸模型图纸制作方法---模大狮模型网

制作3D纸模型图纸通常需要按照以下步骤进行&#xff1a; 选择设计模型&#xff1a; 首先确定你想要制作的3D纸模型的设计&#xff0c;可以是建筑物、动物、交通工具等各种形式的模型。 绘制设计图纸&#xff1a; 使用计算机辅助设计软件(如AutoCAD、SketchUp)或手工绘图工具…

jsp基本语法

jsp的基本语法:java代码放在<% %>之间 jsp的变量定义:局部变量定义放在<% %>之间&#xff0c;全局变量放在<%! %>之间 jsp的表达式&#xff1a;把值显示在网页上&#xff0c;语法是:<%表达式> <% page language"java" contentType&quo…

JavaMySQL高级一(下)

目录 1.常用函数 1.字符串函数 2.时间日期函数 3.聚合函数 4.数学函数 2.分布查询 3.子查询基础 1.简单子查询 1.常用函数 在程序开发过程中&#xff0c;除了简单的数据查询&#xff0c;还有基于已数据进行数据的统计分析计算等需求。因此&#xff0c;在SQL中将一…

【小白成长记】使用watch优化获取不同tab下数据的代码逻辑

场景&#xff1a;页面有一个 el-tab&#xff0c;共两个tab&#xff1a;Tab1 与 Tab2。需求要求进入页面默认active第二个tab即Tab2。 开始代码写成如下&#xff1a; <el-tabs v-model"tabActiveName" type"card" before-leave"handleTabsClick&q…

数据库学习记录(二)多表设计与多表查询

一对多 一对多时候&#xff0c;一张表内的一个数据可能对应着其他表内的多个数据&#xff0c;例如一个部门内有多个员工&#xff0c;但是公司里不只一个部门&#xff0c;也不止一个员工&#xff0c;这个时候就是一对多的情况&#xff0c;这个时候可以绑定一个外键&#xff0c;…