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

news2024/9/22 11:38:47

在这里插入图片描述

👦个人主页:@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.coloradmin.cn/o/1535009.html

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

相关文章

开源表单设计器颗粒度级别控制表单的显示条件原理分析

表单渲染中, 有些表单的显示有不同条件, 比如需要上一个表单的开关打开,或者文本内容为 xxxx, 或者需要大于或等于或小于指定值, 或者需要选中某个选项, 或者需满足以上多个条件或在满足多个条件中的一个, 有 n 种场景选择, 这样就需要条件显示配置功能, 来满足多样化需求 预览…

基于python+vue中医学习服务管理系统flask-django-php-nodejs

随着世界经济信息化、全球化的到来和互联网的飞速发展,推动了各行业的改革。若想达到安全,快捷的目的,就需要拥有信息化的组织和管理模式,建立一套合理、动态的、交互友好的、高效的中医学习服务管理系统。当前的信息管理存在工作…

动态QCA|一条通向动态QCA产出的道路

一、动态QCA原理介绍 (一)动态QCA介绍 QCA(Qualitative Comparative Analysis)是一种定性比较分析方法,用于研究中小样本量的数据,旨在探索变量之间的复杂关系。在QCA中,研究者将变量分为二元变…

js中filter处理后端返回表格数据

<template><div><el-table:data"tableData"style"width: 100%"><el-table-column:formatter"tranForm"prop"gender"label"性别"width"180"></el-table-column><el-table-column…

Lombok插件的安装和使用说明

什么是Lombok?? Lombok是一个通过注解以达到减少代码的Java库,如通过注解的方式减少get,set方法,构造方法等。 //普通的实体类public class Student {private Integer id;private Integer age;public Integer getId () {return id;}public void setId (Integer id) {this.id …

赋能 DevOps:平台工程的关键作用

在当今快节奏的数字环境中&#xff0c;DevOps 已成为寻求简化软件开发和交付流程的组织的关键方法。DevOps 的核心在于开发和运营团队之间协作的概念&#xff0c;通过一组旨在自动化和提高软件交付生命周期效率的实践和工具来实现。 DevOps 实践的关键推动因素之一是平台工程。…

libVLC 设置视频宽高比

宽高比是指视频图像的宽度和高度之间的比率。 投影屏幕尺寸一般都按照对角线的大小来定义的。根据图像制式不同&#xff0c;屏幕的长宽比例也有几种格式&#xff1a; 传统影视的宽高比是 4&#xff1a;3&#xff0c;宽屏幕电影的宽高比是 1.85&#xff1a;1&#xff0c;高清晰…

如何部署GPT模型至自有服务器:从零开始搭建你的智能聊天机器人

引言 GPT模型是自然语言处理领域的重要突破&#xff0c;它能够通过生成式的文本生成方式&#xff0c;实现与用户的智能交互。本文将详细介绍如何将GPT模型部署到自有服务器上&#xff0c;并编写一个基本的API接口来实现与聊天机器人的交互。 目录 引言 一、准备工作 首先&am…

填补市场空白,Apache TsFile 如何重新定义时序数据管理

欢迎全球开发者参与到 Apache TsFile 项目中。 刚刚过去的 2023 年&#xff0c;国产开源技术再次获得国际认可。 2023 年 11 月 15 日&#xff0c;经全球最大的开源软件基金会 ASF 董事会投票决议&#xff0c;时序数据文件格式 TsFile 正式通过&#xff0c;直接晋升为 Apache T…

Java算法总结之插入排序(详解)

程序代码园发文地址&#xff1a;Java算法总结之插入排序&#xff08;详解&#xff09;-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,Java算法总结之插入排序&#xff08;详解&#xff09;http://www.byqws.com/blog/3148.html?sourcecsdn 插入排…

iOS18系统中,苹果可能不再使用Siri,转用Gemini

生成式人工智能&#xff08;Generative AI&#xff09;是苹果公司近两年来默默投资的强大人工智能工具。 坊间流有多种传闻&#xff0c;官方最近终于曝光结果&#xff1a;苹果和谷歌正在谈判将 Gemini AI 引入 iPhone&#xff0c;预计将于今年在所有 iOS 18 设备上推出。 到目前…

Neo4j安装下载以及服务器部署

注意&#xff1a; 下载neo4j之前&#xff0c;需要下载jdk&#xff0c;这里默认已经下载过jdk 版本配置&#xff1a;3.X 支持 1.8jdk&#xff1b;4.X 支持 11jdk 本地安装 1.下载对应JDK支持的安装包 推荐从这里下&#xff0c;直接解压可用&#xff1a;Index of /doc/ne…

CMU 10-414/714: Deep Learning Systems --hw4

通过之前作业中完成的所有组件,使用高性能的网络结构来解决一些问题。首先会增加一些新的算子(使用CPU/CUDA后端),然后完成卷积、以及用一个卷积神经网络来在CIFAR-10图像数据集上训练一个分类器。接着需要完成循环神经网络(带LSTM),并在Penn Treebank数据集上完成字符级…

使用Cpolar异地组网,在vscode上ssh远程开发ubuntu主机

目录 开发环境 操作流程 参考资料 在机器人被搬到另一个屋之后&#xff0c;通过局域网进行ssh开发就变成了个困难的问题。因此尝试了异地组网来解决这个问题&#xff0c;看了一些资料后发现基于cpolar进行异地组网也不困难&#xff0c;这里记录一下步骤。 开发环境 硬件&…

Transformer的前世今生 day06(Self-Attention和RNN、LSTM的区别

Self-Attention和RNN、LSTM的区别 RNN&#xff08;循环神经网络&#xff09; RNN&#xff0c;当前的输出 o t o_t ot​取决于上一个的输出 o t − 1 o_{t-1} ot−1​&#xff08;作为当前的输入 x t − 1 x_{t-1} xt−1​&#xff09;和当前状态下前一时间的隐变量 h t h_t h…

Vue3学习记录(七)--- 组合式API之指令和插件

一、内置指令 1、v-memo ​ 该指令是Vue3的v3.2版本之后新增的指令&#xff0c;用于实现组件模板缓存&#xff0c;优化组件更新时的性能。该指令接收一个固定长度的依赖值数组&#xff0c;在组件进行更新渲染时&#xff0c;如果数组中的每个依赖值都与上一次渲染时的值相同&a…

web前端笔记+表单练习题+五彩导航栏练习题

web前端笔记 1-骨架快捷方式!enter<!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>骨架部分</titl…

刚进公司第一天-电脑环境搭建

写在前面 之前在公司做过一次开发小工具的分享&#xff0c;这两天有个同事找我学习一些小工具开发的知识&#xff0c;但是我发现他的基础是真的差&#xff0c;想学开发知识却连自己本地电脑环境都没弄好&#xff0c;确实&#xff0c;有些人工作了很久&#xff0c;由于自己工作中…

sentinel整合gateway实现服务限流

导入依赖: <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId>com.alibaba.csp</groupId><…

SpringCloudGateway之高性能篇

SpringCloudGateway之高性能篇 背景 在公司的开放平台中&#xff0c;为了统一管理对外提供的接口、处理公共逻辑、实现安全防护及流量控制&#xff0c;确实需要一个API网关作为中间层。 场景 统一接入点: API网关作为所有对外服务的单一入口&#xff0c;简化客户端对内部系统…