【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;

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

罗技G29游戏方向盘试玩拆解,带震动力反馈

1.正好有时间记录下 自己的爱好 一千多的罗技G29游戏方向盘试玩拆解,带震动力反馈,值这个价吗_哔哩哔哩_bilibili 一千多的罗技G29游戏方向盘试玩拆解,带震动力反馈,值这个价吗_哔哩哔哩_bilibili 2.拆解 3.2个大电机 4.主控芯…

上榜|美创入选《2024年网络与信息安全行业全景图》32个细分领域

近日,深圳市网络与信息安全行业协会正式发布《2024年网络与信息安全行业全景图》(以下简称“全景图”),定位展现我国网络与信息安全行业整体生态及细分领域代表性厂商。 美创科技凭借硬核实力,成功入选数据安全、安全服…

外卖项目:使用AOP切面,完成公共字段自动填充(断点调试详细讲解)

文章目录 一、问题描述二、实现思路三、实现步骤四、断点实操五、代码演示 一、问题描述 我们已经完成了后台系统的员工管理功能和菜品分类功能的开发,在新增员工或者新增菜品分类时需要设置创建时间、创建人、修改时间、修改人等字段,在编辑员工或者编…

西井科技与安通控股签署战略合作协议 共创大物流全新生态

2024年3月21日,西井科技与安通控股在“上海硅巷”新象限空间正式签署战略合作框架协议。双方基于此前在集装箱物流的成功实践与资源优势,积极拓展在AI数字化产品、新能源自动驾驶解决方案和多场景应用,以及绿色物流链等领域的深度探索、强强联…

Pudgy Penguins交易量一路攀升 多次创下历史新高

日前,一个名为胖企鹅(Pudgy Penguins) NFT 项目交易量持续攀升,一度在3月9日成为NFT市场的“销冠”。事实上,从2023年下半年开始,Pudgy Penguins的地板价就在不断上升,进入2024年更是多次创下历…

练习题+题解:链表+dp

目录 1.链表指定区间反转题目描述输入格式:输出格式:输入样例:输出样例:题目分析代码实现 2.hxj和他的甜品盲盒I输入格式:输入样例:输出样例:样例解释 输入样例:输出样例:样例解释 题目分析Java代码实现 3.First 50 Prime Numbers输入格式输出格式输入样例输出样例题目解析代码…

MySQL之索引与事务

一 索引的概念 一种帮助系统查找信息的数据 数据库索引 是一个排序的列表,存储着索引值和这个值所对应的物理地址无须对整个表进行扫描,通过物理地 址就可以找到所需数据是表中一列或者若干列值排序的方法 需要额外的磁盘空间 索引的作用 1 数据库…

【干货】Java开发者快速上手.NET指南

前言 前几天有小伙伴在技术群里发了一个微软官方出的:适用于Java开发人员的.NET快速入门免费电子书,今天大姚来分享一下Java开发者想要快速上手.NET有哪些教程和优质资料。 微软适用于Java开发人员的.NET快速入门指南 下载阅读地址:适用于 …

惟客数据CTO 钱勇:数据资产运营创新和实践

​企业如何做好数据资产运营,有效挖掘和利用数据资产? 近日,在由华东江苏大数据交易中心主办的“第四届数字经济科技大会”上,WakeData惟客数据CTO、星光数智CEO 钱勇 给出了自己的观点。 在演讲环节,钱勇以《数据资…

用tp6写的简单的eml的登录和curd

项目地址&#xff1a; 企业管理eml: 这是一个简单的eml (gitee.com) 1.登录和主页显示 1.1 登录功能逻辑图 1.2 控制器 app/controller/index.php php think make:validate LoginValidate <?php namespace app\controller;use app\BaseController; use app\model\User; …

IDEA设置全局配置

1、 IDEA设置全局配置 在IDEA中&#xff0c;选择 File -> Close Project 关闭项目。然后选择Customize -> All settings 进行全局配置&#xff0c;即所有项目公共的配置。 配置文件编码 配置控制台编码 配置maven 配置文件模板 配置文件模板作者和时间信息如下&#xff…

德勤:《亚太地区半导体行业展望》

2024年2月22日&#xff0c;德勤联合全球半导体联盟&#xff08;GSA&#xff09;对亚洲半导体产业链相关企业展开调研&#xff0c;邀请数位亚太地区主要半导体企业领导人&#xff0c;共同探讨半导体企业在当前环境下应如何通过数字技术曲线的领先优势保持业务竞争力和盈利能力&a…

“我的海外代购,卖起了香灰手串”

【潮汐商业评论/文】 “这个琉璃手串&#xff0c;去年在雍和宫请的&#xff0c;招财的&#xff1b;这个朱砂挂件&#xff0c;当时直播说可以补八字缺火&#xff0c;果断下单的&#xff1b;这个博主讲星座很准&#xff1b;这篇帖子八字说得很详细&#xff1b;我前两天买了‘财神…

qt5-入门-标签页部件QTabWidget-1

参考&#xff1a; C GUI Programming with Qt 4, Second Edition 本地环境&#xff1a; win10专业版&#xff0c;64位&#xff0c;Qt5.12 目录 效果实现Qt Designer操作代码addStretch()解释 效果 首页有三个按钮和最近文件列表。 拖动窗口&#xff0c;按钮和文件列表仍然处…

CentOS7安装mysql-5.7.44单机和主从复制

官网下载地址&#xff1a; https://downloads.mysql.com/archives/community/ 1、单机安装 安装依赖 yum -y install libaio 解压安装 tar -zxvf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gzmv mysql-5.7.44-linux-glibc2.12-x86_64 /usr/local/mysqlcd /usr/local/mysql…

【Spring 篇】走进Java NIO的奇妙世界:解锁高效IO操作的魔法

欢迎来到Java NIO的神奇之旅&#xff01;在这个充满活力的世界里&#xff0c;我们将一起揭示Java NIO&#xff08;New I/O&#xff09;的奥秘&#xff0c;探索其在高效IO操作中的神奇魔法。无需担心&#xff0c;即使你是Java的小白&#xff0c;也能轻松领略这个强大而灵活的IO框…

【pycharm】作为Array查看出现数据无法显示问题(已解决)

【pycharm】作为Array查看出现数据无法显示问题&#xff08;已解决&#xff09; 当我们在调试代码的时候&#xff0c;需要对某个变量进行查看&#xff0c;就如同在matlab中&#xff0c;我们可以直接在工作区对某个变量进行双击查看矩阵变量的具体数值 在这里我遇到一个问题&am…

关于javascript数字精度丢失的解决办法

分析原因 众所周知&#xff0c;在JavaScript中计算两个十进制数的和&#xff0c;有时候会出现令人惊讶的结果&#xff0c;主要原因是计算机将数据存储为二进制所引起的&#xff0c;所以这并不是javascript存在的缺陷&#xff0c;而在其他语言中也有类似的问题。 例如下面的例子…

Java小项目--满汉楼

Java小项目–满汉楼 项目需求 项目实现 1.实现对工具包的编写 先创建libs包完成对jar包的拷贝和添加入库 德鲁伊工具包 package com.wantian.mhl.utils;import com.alibaba.druid.pool.DruidDataSourceFactory;import javax.sql.DataSource; import java.io.FileInputStream…

Java基础--集合

集合 1.可以动态的保存任意多个对象&#xff0c;使用比较方便。 2.提供了一系列方便的操作对象的方法&#xff1a;add&#xff0c;remove&#xff0c;set&#xff0c;get等。 3.使用集合添加&#xff0c;删除新元素的示意代码&#xff0c;简介明了。 集合主要是两种&#xff0…