数据库的创建,查看,修改,删除,字符集编码和校验操作

前言❤️❤️

hello hello💕,这里是洋不写bug~😄,欢迎大家点赞👍👍,关注😍😍,收藏🌹🌹

这篇博客是中的代码是在mysql8.0的环境下运行的,没有安装mysql8.0或者navicat的铁汁建议参照上篇博客安装一下😊(链接放在下面了)

🎇个人主页:洋不写bug的博客
🎇所属专栏:数据库
🎇mysql8.0和navicate的安装:mysql安装教程
🎇铁汁们对于MySQL数据库的各种常用核心语法,都可以在上面的数据库专栏学习,专栏正在持续更新中🐵🐵,有问题可以写在评论区或者私信我哦~

打开客户端,开始操作。

1,查看当前已有的数据库

输入show databases;

查看当前已有的数据库,注意SQL语言最后都要加分号,否则运行不出来,show databases;全部写成大写也是可以的,SQL不区分大小写。
下面的这个set,就是结果集合的意思,后面的0.01sec就代表执行时间,sec就是second,表示秒,这个指令的执行时间就是0.01s

这里有4个数据库,这4个库,都是系统库(本来就有的) ,如果把它们删除一个的话,数据库就无法启动,就需要重装数据库,因此,平常不要随便去动系统库。

在上篇博客中用navicat连接mysql时连接名称交的是我的第一个数据库(连接名称叫什么都可以,这个里面有很多数据库,名称只是随便起的 ),里面就是只有这4个系统库,具体连接的教程可以看上篇博客中的客户端部分。

2,数据库的创建

创建的语法就是下面这样,刚看会比较懵逼,后面写几次代码,就能基本上理解了


下面这些概念先了解一下,有的概念是比较靠后的内容,现在只要知道,中括号里面的东西是可写可不写的,这里的任选其一直接写DATABASE就行

任选其一现在可以理解成选这两个效果是一样的,不用深究。

大写部分表示关键字

db_name:表示自定义的数据库名

{} 大括号表示必须选 ------ 这个位置必须要有一个值

| 表示任选其中一个

\] 中括号表示是可选项 ------ 可有可无 CHARACTER SET:指定数据库采用的字符集编码 COLLATE:指定数据库字符集的校验规则 ENCRYPTION:数据库是否加密,MySQL 8.0.16 中引入的新选项

下面就是在mysql命令行工具中创建一个自己的数据库first_database,SQL语言不分大小写,因此这里的create和database大小写都可以,输入这句话后按下enter键,自己的数据库就创建成功了🥳🥳🥳

输入show databases;

查看当前已有的数据库,这个数据库就已经创建上了(下面的0.00sec就是表示这个执行的时间在1ms之内

想再创建一个名字相同的数据库,就不可以了,下面就标注这个数据库已经存在了,无法创建(这就好比要在IDEA一个包中创两个名字相同的类,就会报错)

在创建数据库时,最好加上一个if not exists + 数据库名

判断这个数据库是否已经存在了,存在就不创建,不存在就创建

注:加上判断,数据库名写在最后,database后面就不用写数据库名了

这里就不会报错,会显示有一个警告

输入show warnings;

就可以查看警告信息,警告信息就是这个数据库已经存在,不能创建了

有个操作小技巧,当在mysql命令行工具中写代码,一行命令有单词写错的时候,如果想结束这一行,重新写

可以按 ctrl + c,就会按出一个EOF键,结束这一行,跳转到新的一行

3,字符集编码和校验规则

输入show charset;查看数据库的字符集支持列表
MySQL8.0默认的字符编码就是utf8mb4,就是表中最后一行

表中最右面的一列代表最多占用的字节数
中间的gbk2312,gbk就是中文的字符集编码,都是一个字符两个字节,这些中文的字符集编码现在已经不怎么使用了,普遍使用utf8mb4编码

utf8mb4有4个字节,32个比特位,可以编码可以表示世界上任何一种语言,兼容性极强,在utf8mb4编码中,字符占4个字节,中文占三个字节。
创建数据库时,后面加上character set utf8mb4;,就表示创建的这个数据库使用utf8mb4编码

sql 复制代码
create database if not exists test_db character set utf8mb4;

在创建数据库语法中有个COLLATE,就是指定字符集中的校验规则


字符集校验规则定义如下:

  • ai是 Accent-insensitive 的缩写,表示口音不敏感
  • as是 Accent-sensitive 的缩写,表示口音敏感
  • ci是 Case-insensitive 的缩写表示大小写不敏感
  • cs是 Case-sensitive 的缩写,表示大小写敏感
  • 加上0900会严格遵循 Unicode 9.0 排序规则,能正确处理多种语言的排序和比较,对emoji表情兼容更好
  • 不带 0900使用的是基于 Unicode 4.0 的旧版规则,处理复杂语言时可能出现排序错误,且不支持部分 emoji 的存储

创建数据库时这样写,就表示数据库使用utf8mb4编码,遵循 Unicode 9.0 排序规则,口音不敏感,大小写不敏感,

sql 复制代码
create database if not exists db_name character set utf8mb4_0900_ai_ci;

大小写是否敏感就是是否区分大小写,那什么叫口音敏感不敏感呢?

在数据库中传单词会传入变音符号,在英语中,"résumé"(带有重音符号,意为摘要 )和 "resume"(没有重音符号,意为重新开始),在口音敏感的规则下,数据库会把它们当作不同的单词处理

知识补充:

utf8mb4_0900_ai_ci 是 MySQL8.0 引入的新规则,在老版本中不能识别 ,这也就是上篇数据库安装博客让下载8.0版本的原因

utf8mb4 编码是对 Unicode 字符集的一种实现,用 1 到 4 个字节表示一个字符,可以表示世界上几乎所有的字符,而且更节省空间

0900 是基于 UCA 9.0.0 算法,UCA 是 Unicode Collation Algorithm(统一码排序算法) 的缩写

4,查看数据库的信息

如果忘记了以前创建的一个数据库用哪种字符集编码,口音和大小写是否敏感,是否加密(具体的有关加密大家现在无需详细了解,后面会讲到),就可以查询一下
输入 show create database + 数据库名;,数据库的信息就会以表的形式导出
这里的/*表示的就是区域的意思,围住表示一个区域

这样写其实是为了方便这个数据库的导出,可以把这些语句粘在其他计算机上,这个计算机就可以根据自身的SQL版本创建出数据库

5,更改数据库

更改数据库,其实就是更改数据库的字符集编码、校验规则之类的
但是并不建议大家修改,特别是修改字符集编码!!!

比如数据库前面的数据都是用A编码方式存进去的,改为B编码方式的话,里面的数据就成了一堆乱码,就没有意义了

真的要修改字符集编码的话,一般是把数据取出来,创建一个新的数据库,设置为想要的编码,把取出的数据存到新的数据库中。

修改就是使用alter语句,这里把编码方式改为gbk
看下改之前和改之后数据库的信息,发现确实是修改成功了

sql 复制代码
alter database test_db character set gbk;

有个写代码小技巧,我们在mysql命令行中写语句时,如果想用到以前的语句,就可以按上下键,就可以调出之前写的语句,非常好用👍👍👍

6,删除数据库

这个就是程序员之间很热门的一个梗,叫删库跑路;

大概意思就是如果在公司被老板裁了或者工资被扣了,就把公司的数据库都删了跑路,这样公司的数据就没有了,老板就炸缸了

先不说这样做会不会吃牢饭,这里就讨论一下删库跑路到底会对老板造成多大的影响。
其实在2025年的今天,对老板大影响几乎是没有

因为老板也不傻,他会采取许多防御补救措施来应对删库跑路。
首先,定期对数据进行备份,包括全量备份,增量备份

全量备份就是把所有的数据都备份一遍

增量备份就是把一段时间内新写入数据进行备份,可以理解为对备份的更新
比如先进行一次全量备份,之后每天晚上10点都对数据库进行一次增量备份。

那如果9点59删库跑路,那起码这一天的数据都没有了,如果这天有许多重要数据,那老板不照样炸缸吗?
这就要说到第二道保险,叫做硬盘物理恢复

数据在硬盘中的存储,就像是一个数组,我们普通的删除,只是把size改为了0但是数组里的数据还在,只不过下次存储时会自动覆盖
就算我们把这里面的数据用垃圾数据填充了删,删了填充,搞三五次还是很容易恢复
(硬盘物理恢复在《反贪风暴》第一部就提到过)

除非使用军用格式化,把这些数据用0 1这些垃圾数据,填充了删,删了填充,这样持续三十多次,那硬盘里的数据就无法恢复了😄😄😄

那就算使用军用格式化,让硬盘没办法物理恢复,就真的能把数据库给删掉吗?

其实不是,还有一种恢复手段,叫日志恢复
日志就是记录对数据库的操作,可以通过日志对数据进行恢复。
综上,我们删库跑路不仅违法,对老板的影响也不怎么大,删库跑路可以说就是跑路,因为库并没有删掉😂😂😂

在删除数据库后,数据库中对应的目录(文件夹)都会被删除,
删库是一种危险操作,使用还是要慎重。
按照这个路径找到数据库存储的地方,前面创建了一个名为test_db数据库
可以在这个路径下找到这个数据库的目录

删除数据库用drop database if exists 数据库名;

这个语句的意思就是如果这个数据库存在的话,就进行删除

执行完删除数据库之后,在这个路径里再看,test_db这个目录就没有了。

数据库安装成功并运行以后,就相当于启动了数据库的服务

数据库的服务管理了很多个数据库,每创建一个数据库,都会在这里生成一个新的目录

结语💕💕

上篇博客中介绍了三种客户端工具,分别是workbench,navicat,mysql命令行工具
学习数据库熟练之后,肯定是使用navicat来对数据库进行操作的

但是在初学库的操作时,为了增强记忆,还用mysql命令行来对数据库进行操作比较好,因为这个不包含代码补全,同时也能精准的操控一些细节

以上就是今天的所有内容啦~完结撒花~🥳🎉🎉

在这里插入图片描述

相关推荐
想ai抽3 小时前
吃透大数据算法-算法地图(备用)
大数据·数据库·spark
weixin_307779133 小时前
Clickhouse导出库的表、视图、用户和角色定义的SQL语句
开发语言·数据库·算法·clickhouse·自动化
流星白龙4 小时前
【Qt】7.信号和槽_connect函数用法(1)
开发语言·数据库·qt
码界奇点4 小时前
平替MongoDB金仓多模数据库在电子证照国产化中的实践与优势
数据库·mongodb·社交电子·里氏替代原则
2501_915909064 小时前
iOS App 上架全流程详解:证书配置、打包上传、审核技巧与跨平台上架工具 开心上架 实践
android·ios·小程序·https·uni-app·iphone·webview
2501_915106324 小时前
iOS 26 系统流畅度测试实战分享,多工具组合辅助策略
android·macos·ios·小程序·uni-app·cocoa·iphone
2501_915918414 小时前
开发 iOS 应用全流程指南,环境搭建、证书配置与跨平台使用 开心上架 上架AppStore
android·ios·小程序·https·uni-app·iphone·webview
灵芸小骏4 小时前
Rokid应用实践:基于CXR-M与CXR-S SDK,打造眼镜与手机协同的‘智能随行记录仪’
android
奔跑中的蜗牛6664 小时前
直播 QoE 监控体系设计与落地(三):原生卡顿优化实践
android