数据库的创建,查看,修改,删除,字符集编码和校验操作
前言❤️❤️
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编码
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 排序规则,口音不敏感,大小写不敏感,
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
看下改之前和改之后数据库的信息,发现确实是修改成功了: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命令行来对数据库进行操作比较好,因为这个不包含代码补全,同时也能精准的操控一些细节
以上就是今天的所有内容啦~完结撒花~🥳🎉🎉在这里插入图片描述