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

【MySQL — 数据库基础】深入解析MySQL数据库操作:创建、使用、删除及字符集管理

c96f743646e841f8bb30b2d242197f2f.gif

692a78aa0ec843629a817408c97a8b84.gif

目录

? ? 1. 数据库的操作? ??

? ? 1.1 显示当前的数据库? ??

? ? 1.2 创建数据库? ??

? ? 1.3 使用数据库? ??

? ? 1.4 删除数据库? ? ?

? ? 1.5 删除磁盘文件的原理? ??

? ? 1.6?退出客户端? ??


文章介绍

  • 本文详细介绍了数据库的基本操作,包括显示当前数据库、创建数据库、使用数据库、删除数据库以及删除磁盘文件的原理。
  • 同时,文章还涉及了如何在官网查看MySQL参考手册流程、创建数据库的语法、查看警告信息、创建数据库时指定字符集和排序规则,以及查看当前数据库服务全局的默认字符集。


1. 数据库的操作


在一个数据库服务中,可以包含很多个数据库:

当我们不知道DB A,DB B(DB是数据库管理员缩写)是为哪一个应用程序提供服务的时候,不能随意修改操作这两个数据库,我们操作的数据库,应该是自己熟悉的数据库;

在生成环境中,数据库管理员应该合理分配读取,连接库权限;


1.1 显示当前的数据库


我们首先要创建一个属于数据库,创建之前需要检查一下,同事是否已经创建过了;

那么如何检查呢?还是需要通过一些简单的SQL指令;

查看数据库服务中有多少个数据库,可以使用 show databases;


分析表中的数据库作用:


一些常见的操作:


1.2 创建数据库


1.2.1 在官网查看mysql参考手册流程


1.2.2 创建数据库


解析:



如果指定的数据库不存在,则创建test_db2:


解析:


1.2.3 查看警告信息



if not exists 意思是如果不存在则创建,如果不加这个可选关键字,就会直接报错;

在真下在的工作中,执行SQL语句,不是手动一条一条执行的,而是批量一起执行,为了不让某一条语句的错误影响整个执行流程,都会加上一些类似于if not exists 的校验,防止因为某条SQL出错导致整个SQL中断执行;


1.2.4 创建数据库并且指定字符集和排序规则


对于字符集:


8.0 中默认的字符集是 utf8mb4;5.7中默认的字符集是latin1,这个字符集无法存储中文;

创建数据库的时候强烈建议手动明确认定字符集;


对于排序规则:


  • 8.0 默认的是utf8mb4_0900_ai_ci,ai表示口音不敏感,ci表示大小写不敏感,虽然大小写的Ascii码不一样,但是排序规则指定 ci,会被系统识别为同一个字符;
  • 5.7 中默认的排序规则是utf8mb4_general_ci,表示通用口音,大小写不敏感的排序规则;


创建一个名为test_db03的数据库,并指定字符集和排序规则


1.2.5 查看当前数据库服务全局的默认字符集


全局默认字符集在配置文件 my.ini 中可以设置,设置了什么字符集,在 mysql 运行的时候,是可以查询的,会把信息保存到系统表中:

输入指令后,当前系统中的字符集会显示出来;

系统使用的是 utf8mb3 这么一个编码格式,utf8mb3 和utf8mb4 有什么区别呢?

utf8mb3并不是一个真正意义上的 utf8 编码,支持的内容比较少,用1-3个字节表示所有的字符编码,不支持特殊的字符/表情这些编码很长的符号;


utf8mb4 的字符编码为4个字节,达到了一个整型的长度,回忆整型长度的范围,如果是无符号整型,范围可以达到0-42亿的表示长度,意味着utf8mb4 可以支持世界上任意一个特殊字符,使用utf8mb4的字符集,可以保存任意特殊字符到数据库中;


如果是在默认的终端中,client 的字符集是 gbk


如果要强行当前数据库指定编码集,可以在快捷文件属性的目标文件路径后,指定 utf8mb4 即可;


1.2.6总结


补充 :能不能使用关键字为库名创建数据库呢?


是可以的:


解析


1.3 使用数据库


查看版本号 :


查看当前选择要操作的数据库是哪一个:

这里返回 null,表示当前未选择数据库;

version(),database(),这些带括号的,都是MYSQL提供的内置方法;


选择要操作的数据库:


1.4 删除数据库




删除数据库是一个非常非常危险的操作,在自己的项目会在公司中千万这么做,使用之前一定要慎之又慎;drop 开头的SQL语句,可以了解就行;


1.5 删除磁盘文件的原理


在服务器(一般都是用Linux系统)上删除并没有回收站这么一说,删了就没有了,这是针对操作系统而言的;

但是在磁盘上删除文件,并不是真正意义上的什么都没有了,而是把删除文件的位置,置为一个删除标记,这个文件还存在,只不过把这个文件占用的磁盘空间置为已删除状态,类似于 ArrayList的删除操作:

  • 如果要把最后一个下标位置index的数据删除,只要把size–,并且把 index 向前移动一位即可;
  • 如果一个新的元素写入集合,index++即可,就会把原来 index 下标的数据覆盖掉;

恢复磁盘数据

方法一:通过磁盘厂商恢复

删除磁盘文件的实际情况,只要这种类似的覆盖次数不多,被覆盖的数据是可以恢复的,一般是通过磁盘的厂商进行恢复的,但是需要爆金币;


方法二:通过日志恢复数据

还有一种非常常用的恢复数据库操作,就是通过日志处理;Mysql会在执行的过程中,只要对数据库进行修改操作(查询操作不算),都会把这些数据的内容记录在日志中,如果误删数据库,就可以通过日志,快速地把日志中记录的操作重新执行一次;


增量备份&全量备份

  • 数据库也会定期备份,每天备份一次(增量备份,记录的是今天比昨天新增的数据),或者每周备份一次(全量备份,数据库中的所有数据都会备份下来);
  • 当数据出现问题时,比如被恶意入侵,修改,误…可以通过礼拜天的全量备份,和前几天的增量备份,来恢复成昨天的数据量,只会损失当天的数据量,保证大部分数据都是安全的;
  • 如果恶意删除数据的人,也同时删除这台机器的日志,可以通过其他机器的日志来恢复,因为在公司的生产环境中,一般都是以集群形式部署的,这些集群的机器上的日志内容相同,副本不同,分配在集群的每一台机器上;

备份服务器,处理每天的增量备份和每周的全量备份,还会有一个物理的备份,备份分成冷备份和热备份,生产服务器的数据库服务器集群,和备份服务器会部署在不同地方,产生地理隔离,如果因为自然灾害丢失导致其中一方的数据库受损,另一方的数据库可以继续提供服务;


1.6退出客户端


可以通过输入 ?或者 指令来查看 mysql 客户端指令


c96f743646e841f8bb30b2d242197f2f.gif

692a78aa0ec843629a817408c97a8b84.gif


http://www.kler.cn/a/456634.html

相关文章:

  • 前端超大缓存IndexDB、入门及实际使用
  • c++类和对象(六个默认成员函数)
  • ROS2+OpenCV综合应用--10. AprilTag标签码追踪
  • 优化租赁小程序提升服务效率与用户体验的策略与实践
  • vue3学习笔记(10)-$subscribe,store组合式写法
  • python 渗透开发工具之SQLMapApi Server不同IP服务启动方式处理 解决方案SqlMapApiServer外网不能访问的情况
  • jwt在express中token的加密解密实现方法
  • FastAPI vs Flask 专业对比与选择
  • 嵌入式单片机中IIC通信控制与实现
  • 全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之循环结构(for循环语句)(三)
  • 欧科云链OKLink:比特币与以太坊“双重启动”将如何撬动市场?
  • 12.26【net】[review][day2]
  • 以太网(Ethernet)与互联网(Internet)
  • 【vue】vue运行报错“Error:listen EACCES:permission denied”
  • 如何写好一篇技术文档???
  • 远程控制macOS一直卡在100%,能连接上了却只显示了壁纸?
  • 20241218-信息安全理论与技术复习题
  • 服务器选择固态硬盘的好处是什么?
  • vulnhub靶场 Empire LupinOne
  • CSS---实现盒元素div内input/textarea的focus状态时给父元素加属性!
  • uniapp 前端解决精度丢失的问题 (后端返回分布式id)
  • 基于进程信号量的多线程同步机制研究与实现
  • Vue 3 与 Tauri 集成开发跨端APP
  • NLP 中文拼写检测纠正论文 Automatic-Corpus-Generation
  • ArcGIS Pro地形图四至角图经纬度标注与格网标注
  • 螺杆支撑座在运用中会出现哪些问题?