【MySQL】sql语句之库操作

news2025/2/23 1:48:07

序言

 在上篇文章学习当中,我们认识了数据库的相关概念,以及MySQL的框架和基本使用等内容,总之对数据库有了一个大致的认识,那么本篇文章将开始关于sql语句的学习,本文主要是关于库的属性和操作的内容,简单可概括为两个属性和六个操作,本文的内容不难,主要涉及一些语法上的部分,话不多说就让我们开始今天的学习吧!

一、编码

 我们先要对计算机世界中字符的存储的原理有一定的认识,即在计算机中一切都以二进制的方式进行存储,字符也是如此,那么一个字符也就对应着一串二进制序列,那这个二进制序列该如何规定呢?这就涉及到了编码格式的规定,一般来说常用的有三种编码格式。

  • ASCII码

 最初发展出来的是一种ASCII码,英文全称为American Standard Code for Information Interchange,翻译过来就是美国信息交换标准代码,一种基于拉丁字母的字符编码。相信各位对此种编码形式并不陌生,在学习C语言的时候是否跟我一样经常翻ASCII表查字符对应的数字呢?

 在C语言中char类型就采用此方式的编码,这种编码形式虽然因其简单——只支持128个字符,可移植性好——几乎所有的计算机都支持,但是却具备很强的局限性,那就是只能表示拉丁文和英文,并不支持其它类型的语言。

  • GBK编码

 再来谈一种gbk编码,即Guo Biao Ku,取拼音中的首字母组成,是中华人民共和国制定的汉字内码扩展规范的简称,简单来说就是汉字的编码规范,其中一个汉字由两个字节表示,属于双字节编码。此编码在中国大陆被广泛的使用,尤其是在传统的软件系统和一些特定领域。不过同样也会有不支持国际化字符,因此多语言场景下会出问题。

  • UTF-8编码

 为了解决以上的多语言的国际化场景,催生出了Unicode,简称万国码,统一码,并由此引出了如今最为常用的UTF-8编码,具备向后兼容,ASCII码直接就能当UTF-8编码;可变长度编码,使用一到四个字节表示一个字符;节省空间,一个英文字符只用一个字节,相对于UTF-16编码(2个字节);全面支持——世界绝大多数的语言,以及表情包和特殊字符;等优点。

 我们常见的设备之间发送正常数据双方出现乱码的情况可能就是编码格式不统一导致,因此要根据具体的实际需求采用相应编码格式,除此之外,上面只是介绍了常见的三种编码形式,更多的则要根据实际的场景选取符合需求的编码形式。


那回归到实际的MySQL的操作中,创建数据库时可能要根据需求手动设置编码形式,分为字符集和校验集。

  • 字符集,就是上述的字符如何编码成二进制序列,然后存放在磁盘当中便于之后进行读取。
  • 校验集,则是从磁盘中以对应的编码形式将字符取出来,然后实行校验和比对。下文会做一个小实验看同一字符集不同校验集的差别。

首先登录MySQL之后使用命令查看系统变量character_set_database以及collation_database,对应着MySQL默认采用的字符集和校验集。

在这里插入图片描述
然后使用show命令查看MySQL支持的字符集和校验集,提及一个细节一个字符集可以有多个校验集,而一个校验集只对应一个字符集。

在这里插入图片描述
列属性:

  • CharSet,所采用的字符集编码规范,这里标出了上述提及的三种编码形式。
  • Description,字符集的基本的描述。
  • Default Collation,默认采用的校验集,因为一个字符集对应多个校验集,所以给出默认的。
  • Maxlen,一个字符所能占用的最大字节数,这也是utf8mb4和utfmb3的区别。

在这里插入图片描述
说明:博主所在版本MySQL总共支持有286种校验集,图中是我截出来拼凑出来的几种校验和,并没有列全,hhh,我不说你可能都看不出来吧,开个玩笑,相信细心的你当然能察觉出这一点。

列属性:

  • Collation,采用的校验集,上述总共两百多种,且一个字符集大概都会有多个校验集。
  • CharSet,校验集所对应的字符集,注意不能采用非对应的字符集,否则可能会出现乱码或者结果不符合预期的现象。
  • ID,标识ID,每个校验集都对应唯一一个ID,方便在表中根据ID进行查找。
  • Default,表明该校验集是否是默认支持的,可与上面的字符集的图进行对应进行验证。
  • Compiled,是否已编译,将默认的校对的信息提前准备好,可以提高排序的性能。
  • Sortlen,排序时截取的字节数,方便按字节进行比较大小进行排序。
  • Pad_attribute,表明是否处理字符串末尾的空字符,PAD SPACE表示处理有效字符,NO PAD,表示忽略字符。

二、操作

1.创建

create database (if not exists) [库名] (charset=[字符集] collate=[校验集]);
  • 括号内部的可省略,请注意创建时只有if not exist 没有 if exist。
  • 不设置字符集和校验集,使用MySQL默认的。

在这里插入图片描述

说明:此处采用的是utf8_general_ci的校验集,不区分大小写,还有一个utf8_bin,区分大小写。此处稍微铺垫一下,稍后的小实验中要用。

2.显示创建语句

show create database [数据库];

在这里插入图片描述
说明:

  • SQL语句不区分大小写,但个人建议是小写的好阅读,所以一般用的SQL语句都是小写的。
  • 'test_db' ,图中的单引号表示的是数据库名称,这样是为了防止库名是关键字,比如create,show等关键字。
  • /* ... */ ,部分并不是注释,而是当版本超过4.0100或者8.0016时执行此sql语句。

3.使用和查询

use [库名];
#使用指定的数据库
select database();
#查询当前在哪一个数据库

在这里插入图片描述

3.修改属性

alter database [库名] charset=[字符集] collate=[校验集];

此处我们来做一个小实验在使用此语句的同时,同时来看看使用utf8_general_ciutf8_bin对数据校对产生的影响。


首先,创建一个简单的表结构,并向表里面插入一些数据。
在这里插入图片描述


然后,使用select语句对表数据进行排序,查看结果。

在这里插入图片描述

  • 可以注意到,在utf8_general_ci的校验集下,A和a等大小写字母是相同的,被排在了一起。这种对于表数据的删改查都有影响,比如让删除’a’时,会连带’A’一块进行删除,该操作也是类似。

此处使用alter命令,将校验集改为utf8_bin,不过需要注意表的属性和数据库的属性是独立互不影响的,因此只修改数据库的属性是无法看到预期效果的,那表的属性如何修改就先挖一个坑,之后在讲表时会添上,这里为了看到预期效果我们就将表删除再重新建表。

只修改不重新建表的效果:
在这里插入图片描述

删表之后再重新建表插入相同数据之后排序效果:

在这里插入图片描述

4.备份

mysqldump -P [端口号] -u [用户名] -p [密码] -B [数据库名],[数据库名],... > [文件名].sql;
#系统执行命令,需退出mysql,或者在mysql内执行的话前加上system 

首先将上述的创建的数据库进行备份。
在这里插入图片描述

说明:读者如果对备份的文件感兴趣的话,可以自行使用vim或者nano工具查看备份之后的数据库文件,其中大多是一些数据库的注释和表内容的sql语句,这里只简单的点缀一下。


然后删除所在的数据库test_db,便于之后进行恢复。

在这里插入图片描述

5.恢复

source [指定目录下的备份文件];

在这里插入图片描述


到这里我们再看一下表的内容是否也恢复了,顺便也排序一下看是否跟之前的结果一样。

在这里插入图片描述

6.查看库连接

show processlist;

在这里插入图片描述

说明:当打MySQL命令比较卡的时候,此命令可以帮助查看哪个连接是异常登录的,如果有则说明MySQL被攻击了,但一般来说MySQL只在内网当中使用,比较安全。

总结

本篇学习了两个属性,即数据库的字符集和校验集,以及六种操作,创建数据库,查看,显示创建信息,修改属性,备份,恢复;总的来说主要是sql语句的内容,需要各位手勤多敲几遍,主打的就是一个熟练度。我是舜华,期待与你的下一次相遇。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1799823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DOS 操作系统

DOS 介绍 DOS:disk operating system,磁盘操作系统。 中国DOS联盟下载 MS-DOS 7.10完整安装版(含图形安装程序) DOS 环境下的操作 输入部分内容后按下 Tab 可以快速自动补全。 按住 Ctrl 键可以用鼠标滚轮改变字号大小。 DO…

如何在virtualbox上安装Linux系统(centerOS)

提示:共同学习 注意:一定要在BIOS中的虚拟化打开。 文章目录 第一步: 第一步: 启动 、显示开启 centos基础安装 ​ ​

【传知代码】基于曲率的图重新布线(论文复现)

前言:在图形处理中,一个至关重要的问题是图形的重新布线,即在不改变图形基本结构的前提下,通过调整节点间的连接关系,使图形具有更好的性质,如更低的复杂度、更高的可视化效果或更强的鲁棒性。传统的图形重…

暂停系统更新

电脑左下角搜索注册表编辑器 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings 找到这个目录 打开FlightSettingsMaxPauseDays,没找到的话就创建一个同名文件夹然后选择10进制填入3550​​​​​​​ 最后进入系统暂停更新界面选择最下面…

[C/C++]_[初级]_[在Windows和macOS平台上导出动态库的一些思考]

场景 最近看了《COM本质论》里关于如何设计基于抽象基类作为二进制接口,把编译器和链接器的实现隐藏在这个二进制接口中,从而使用该DLL时不需要重新编译。在编译出C接口时,发现接口名直接是函数名,比如BindNativePort,怎么不是_BindNativePort?说明 VC++导出的函数默认是使…

Day49 动态规划part08

LC139单词拆分(未掌握) 未掌握分析:将字符串s中的各个字符看成是背包,思考成了多重背包问题单词就是物品,字符串s就是背包,单词能否组成字符串s,就是问物品能不能把背包装满。拆分时可以重复使用字典中的单词&#xf…

缓存方法返回值

1. 业务需求 前端用户查询数据时,数据查询缓慢耗费时间; 基于缓存中间件实现缓存方法返回值:实现流程用户第一次查询时在数据库查询,并将查询的返回值存储在缓存中间件中,在缓存有效期内前端用户再次查询时,从缓存中间件缓存获取 2. 基于Redis实现 参考1 2.1 简单实现 引入…

访问成员变量(反射)

文章目录 前言一、访问成员变量的方法二、Field类 1.常用方法2.实操展示总结 前言 为了实现随时随地调用某个类的某个成员变量,我们可以通过反射的Field类进行调用。这其中需要我们获取该类的Class对象,再调用Field类的相关方法,实时地灵活地…

虚拟机与windows文件同步

如果上图中不能设置,则在虚拟机mnt文件夹执行以下命令:

【Vue】作用域插槽

插槽分类 默认插槽:组件内定制一处结构 具名插槽:组件内定制多处结构 插槽只有两种,作用域插槽不属于插槽的一种分类。作用域插槽只是插槽的一个传参语法 作用: 定义slot 插槽的同时, 是可以传值的。给 插槽 上可以 绑定数据&a…

FL Studio21.2.9中文破解版水果软件安装包附带激活码注册码

音乐制作软件,对很多人而言,是一个“高门槛”的存在。它既需要专业的音乐知识,也需要复杂的操作技巧。 「FL Studio 21中文版马丁版下载」,复制整段内容,打开最新版「夸克APP」即可获取链接: https://pan…

Qt QProcess调用外部程序,并实时打印输出信息

Qt QProcess调用外部程序,并实时打印输出信息 引言一、源码分析1. 外部程序 - 被QProcess调用启动2. QProcessDemo - 调用外部程序,并实时打印输出信息 二、参考链接 引言 QProcess是Qt框架中的一个类,用于处理外部进程。它提供了一种直接与操…

RabbitMQ docker安装及使用

1. docker安装RabbitMQ docker下载及配置环境 docker pull rabbitmq:management # 创建用于挂载的目录 mkdir -p /home/docker/rabbitmq/{data,conf,log} # 创建完成之后要对所创建文件授权权限,都设置成777 否则在启动容器的时候容易失败 chmod -R 777 /home/doc…

CorelDRAW2024发布更新啦!设计师们的得力助手

在数字化的今天,视觉设计已经成为我们生活中不可或缺的一部分。从手机界面到广告海报,从网页布局到包装设计,每一个细节都离不开设计师们的专业与创意。然而,面对日益增长的设计需求和不断提升的审美标准,许多设计师开…

贝锐花生壳DDNS:远程访问数据库,仅需简单3步

在当今数字化时代,数据的远程访问和管理变得至关重要。无论是企业还是个人开发者,都需要一种简单、安全的方式来远程访问和管理本地部署的数据库,如MySQL、PostgreSQL、MongoDB等。贝锐花生壳DDNS服务提供了一个完美的解决方案,通…

【Vue】组件的存放目录问题

注意: .vue文件 本质无区别 组件分类 .vue文件分为2类,都是 .vue文件(本质无区别) 页面组件 (配置路由规则时使用的组件)复用组件(多个组件中都使用到的组件) 存放目录 分类开来的…

fastjson 泛型转换问题(详解)

系列文章目录 附属文章一:fastjson TypeReference 泛型类型(详解) 文章目录 系列文章目录前言一、代码演示1. 不存在泛型转换2. 存在泛型转换3. 存在泛型集合转换 二、原因分析三、解决方案1. 方案1:重新执行泛型的 json 转换2. …

Java使用GDAL来解析KMZ及KML实战

目录 前言 一、在GQIS中浏览数据 1、关于空间参考 2、属性表格 二、GDAL的相关驱动及解析实战 1、GDAL中的KMZ驱动 2、GDAL实际解析 三、数据解析成果 1、KML解析结果 2、KMZ文件入库 四、总结 前言 在前面的博客中讲过纯Java实现Google地图的KMZ和KML文件的解析&…

java第二十一课 —— 快捷键,包,访问修饰符

IDEA 快捷键 删除行:Ctrl Y复制行:Ctrl D补全代码:Alt /添加取消注释:Ctrl /导入该行需要的类:Alt Enter快速格式化代码:Ctrl Shift L快速运行程序:Ctrl Shift F10生成构造器&#xf…

Python实现调用并执行Linux系统命令

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主。 🤓 同时欢迎大家关注其他专栏,我将分享Web前后端开发、人工智能、机器学习、深…