当前位置: 首页 > news >正文

MySQL学习(1)——基础库操作

欢迎来到博主的专栏:MySQL学习
博主ID:代码小豪

文章目录

    • 数据库原理
    • 基础库操作
      • 增删数据库
      • 数据库编码与校验规则
      • 验证不同的校验规则对于库中数据的影响
    • 备份与恢复数据库

数据库原理

mysql版本:mysql8.0
操作系统:ubuntu22.4
为了减少由于环境配置以及权限限制带来的使用问题,博主建议大家使用root账号操作。

mysql -uroot -p

如果在安装MySQL时,注册了用户密码,那就使用注册的密码登录,如果没有注册密码,那就直接按下回车免密登录。

所谓安装数据库服务器,只是在机器上安装了一个数据库管理系统程序,这个管理程序可以管理多个数据库,一般开发人员会针对每一个应用创建一个数据库。为保存应用中实体的数据,一般会在数据库中创建多个表,以保存程序中实体的数据。数据库服务器、数据库和表的关系如下:
在这里插入图片描述

我们程序有时候是需要保存数据的,比如游戏,需要保存用户的账号数据,而这些数据是不能只保存在内存当中的,因为程序一关闭,数据就丢失了。那么为了长期保存这些数据,通常我们会将这些数据保存在磁盘当中,即文件的形式保存。

那么为什么我们不选择用文件,而是用数据库呢?这是因为文件的数据,如何查找、如何读取、如何修改。这些操作都需要用户自己去编写代码。这会导致开发周期延长。换句话说也是怕麻烦(hh)。

实际上MySQL也是将数据保存在文件当中,这一点我们会在后面体现。但是数据库的本质并不是文件‌。数据库是一个存储和管理数据的系统,它通过特定的格式将数据存储在文件中,但数据库的功能远不止于此。数据库不仅提供数据的存储功能,还具备数据管理、查询优化、数据安全等多种高级功能。这些功能使得数据库与简单的文件存储有本质的区别‌

基础库操作

增删数据库

查看数据库

show databases;

查看当前存在的数据库
在这里插入图片描述

但是实际上除了使用指令查看外,我们还可以进入到目录/var/lib/mysql/中查看,此时该路径下的目录文件,就是一个数据库
在这里插入图片描述

创建数据库

create databases [if not exists] db_name;

db_name是创建的数据库的名字,[]中的是可选选项,表示创建db_name之前判断一下是否存在同名数据库

比如,我们创建一个名为test的数据库,可以输入create database test;或者create database if not exists test;

在这里插入图片描述

但是实际上我们创建的数据库是需要携带编码集和校验规则的的,首先编码集不仅规定了数据如何存储,也规定了数据如何读取,这就好比如果你用中文写了一篇文章,那么读这篇文章的人就要会中文才行。如果不会中文怎么读取呢?而校验集则是规定了字符的排序规则和比较规则,比如你写一个字符串比较的算法,是不是首先要规定字符串比较的方式啊?比如字典序之类的。因此校验规则影响字符串的比较、排序结果以及索引行为。

创建一个使用utf8字符集的数据库

create database db_name charset=utf8;

创建一个使用utf8字符集,并带校对规则的数据库。

create database db_name charset=utf8 collate utf8_general_ci;

如果没有指定编码集合校对规则,那么该数据库使用的就是默认的编码集和校对规则。通过修改配置文件可以修改默认等的编码集合校对规则。

删除数据库

DROP DATABASE [IF EXISTS] db_ name;

比如我们将刚刚创建的test数据库删除。使用drop database test或者drop database if exists test
在这里插入图片描述

数据库编码与校验规则

查看所有编码和校验规则

show charset;

使用show cahrset;可以查看MySQL支持的所有编码集和对应的校验规则
在这里插入图片描述

查看单一数据库使用的编码集和校验规则
使用SQL语句SHOW CREATE DATABASE your_database_name;

比如我们创建一个test1数据库,在我的机器上,默认使用的编码集是utf-8,使用的校验规则也是utf-8对应的校验规则。因此test1的编码集应为utf-8,校验规则为utf-8对应的校验规则
在这里插入图片描述

虽然上图没有显示校验规则,这是因为如果我们使用utf8默认的校验规则,MySQL不显示校验规则,不过test1使用的依旧是utf-8的对应默认校验规则。

如果创建的校验规则不是编码集的默认规则,那么就会显示出来,比如我们创建test3,使用utf8和utf8_bin校验规则(默认的校验规则是utf8mb3_general_cl)。

在这里插入图片描述

这里再补充一个由于版本差异导致情况,在MySQL8.0以上版本,使用utf8作为编码集,实际上使用的utf8mb3。

验证不同的校验规则对于库中数据的影响

在前面的文章中,博主创建了相同编码集,不同校验规则规则的两个库,分别是test1(utf8,utf8_gergenalci)和test3(utf8,utf8_bin)。现在忽略建表,插入数据,搜索数据等操作(后面会讲),我们向test1和test3插入(‘A’‘a’‘B’‘b’‘C’c’)。观察不同校验规则下,对于排序,搜索有什么影响。

图片描述
test1中对于字符'a'的搜索结果

图片描述
test3中对于字符'a'的搜索结果

可以发现,在test1中搜索’a’的结果有两个,而在test3中只有一个,这是因为utf8_gergenalci校验规则不区分大小写。而utf8_bin校验规则区分大小写。

接下来看看数据的排序情况。

图片描述
test1中的排序情况

图片描述
test3中的排序情况

可以看到test1的排序顺序是按照字典序来的,而test3的排序顺序则是按照ASCII码值排序的。

实际上做这么多,其实就是想说明一件事,在MySQL中,使用不同的校验规则,会带来不同的使用结果。

备份与恢复数据库

备份数据库

mysqldump -P[端口号] -u root -p 密码 -B 数据库名 > 数据库备份存储的文件路径

备份数据库的指令并非在MySQL程序中使用,而是在linux终端中使用,使用命令时,需要指明备份的数据库所在的mysqld的端口号,需要备份的数据库,以及备份的数据保存的路径。

比如我们将数据库test1备份到/root/MySQL/test1.sql中,首先我们查看一下mysqld的端口号(一般是3306,可以通过配置文件修改)

在这里插入图片描述

输入指令mysqldump -P 3306 -uroot -p -B test1 > /root/MySQL/test1.sql接着会提示你输入密码,如果是免密登录的话直接按下回车就行。
在这里插入图片描述

我们查看一下test1.sql,可以发现MySQL备份的数据库其实是记录下恢复数据库需要使用的SQL语句。

在这里插入图片描述

恢复数据库
恢复数据库则需要我们在mysql程序中使用SQL语句。

source [数据库所在路径];

那么我们打开mysql,把数据库test1先删除,接着将备份的数据库/root/MySQL/test1.sql给恢复。输入指令``resource /root/MySQL/test1.sql
在这里插入图片描述

http://www.lryc.cn/news/573948.html

相关文章:

  • 【C++开发】CMake构建工具
  • 系统思考:救火先放火
  • (线性代数最小二乘问题)Normal Equation(正规方程)
  • 【边缘计算】ECA、ECN、ECI
  • 逆向某物 App 登录接口:还原 newSign 算法全流程
  • springboot 提供的可扩展接口
  • Element表格表头合并技巧
  • 30天pytorch从入门到熟练(day1)
  • VS2019调试进入FFmpeg源码
  • Vulkan 学习笔记15—Mipmap 与多重采样
  • 【webSocket】WebSocket全双工通信实战指南
  • 从零开始手写redis(15)实现自己的 HashMap
  • java专题漏洞总结 + 靶场练习
  • 【学习笔记】深入理解Java虚拟机学习笔记——第10章 前端编译与优化
  • RA4M2开发IOT(10)----集成LPS22DF气压计
  • 扫雷中的数学原理
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月22日第116弹
  • 64-Oracle Redo Log
  • 肖臻《区块链技术与应用》第六讲:比特币网络
  • 点点(小红书AI搜索):生活场景的智能搜索助手
  • 数据库(1)-SQL
  • C++ - 标准库之 <string> npos(npos 概述、npos 的作用)
  • 2140、解决智力问题
  • 用 Python 绘制动态方块热力图:从数据到可视化的完美蜕变
  • Java基础复习之接口
  • PyTorch 入门学习笔记
  • LLM存储优化:大量长对话解决方案
  • 解决OSS存储桶未创建导致的XML错误
  • SQL Server基础语句4:数据定义
  • C#设计模式-Builder-生成器-对象创建型模式