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

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

前言❤️❤️

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命令行来对数据库进行操作比较好,因为这个不包含代码补全,同时也能精准的操控一些细节
    以上就是今天的所有内容啦~完结撒花~🥳🎉🎉

    在这里插入图片描述

    在这里插入图片描述

http://www.dtcms.com/a/486779.html

相关文章:

  • C语言初步学习:数组的增删查改
  • 【组队学习】Post-training-of-LLMs TASK02
  • 系统设计相关知识总结
  • 做视频的模板下载网站xunsearch做搜索网站
  • 做企业网站需要人维护么电子商务推广
  • Linux驱动开发原理详解:从入门到实践
  • HarmonyOS之Environment
  • 鸿蒙仓颉:如何获取全局定义的Context以及使用方法
  • 银河麒麟V10的X86架构部署postgresql,解决信创离线部署兼容问题
  • 如何建设物流网站智慧团建官网手机版登录
  • 寄生虫网站代做工程公司取名字大全
  • 用户体验就是新SEO:如何同时提升搜索者满意度和搜索排名
  • SpringBoot的IOC和DI学习
  • 《道德经》第十七章
  • 长宁区网站制作设计wordpress添加微信分享功能
  • vue做pc网站某网站seo诊断分析和优化方案
  • AWS MSK IAM 认证访问权限配置指南
  • 郑州网站制作价格网站做线
  • Code2Video: 代码驱动生成教育视频
  • 【Qt】7.信号和槽_connect函数用法(1)
  • 【成功案例分享】手腕鼓包?不痛不痒?我的腱鞘囊肿15天自愈实战记录
  • gcc: 函数调用优化一例,在栈里找不到函数调用的影子;gdb
  • Navicat Premium 与金仓数据库融合实践:高效管理国产数据库新方案
  • 高光谱成像在种子品种、种子纯度、种子活力鉴别的研究进展
  • 怎样在网上建网站做电商生意网站抓取压力高
  • 陕西网站建设开发企业网站搜索优化外
  • 校园网站建设初探论文南山品牌网站建设企业
  • Apache Spark算法开发指导-特征转换TargetEncoder
  • spark热点key导致的数据倾斜复现和加盐处理
  • Chrominum的技术架构