【MySQL】sql语句之库操作

序言

 在上篇文章学习当中,我们认识了数据库的相关概念,以及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语句的内容,需要各位手勤多敲几遍,主打的就是一个熟练度。我是舜华,期待与你的下一次相遇。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024网络与信息安全管理员职工职业技能竞赛re0220164094

main部分,就是要逆这部分shellcode,程序把data段里面的东西复制到bss段去执行,期间包含解码操作。 v19 0;puts("Please input your flag: ");__isoc99_scanf("%s", s);if ( strlen(s) ! 38 ){puts("Wrong length!&…

yolov5模型结构与构建原理

一.yolov5模型结构与构建原理 修改模型结构,全部在models文件夹下面 models/common.py (加入新增网络细节) models/yolo.py (设定网络结构传参细节) models/##.yaml (修改模型结构配置文…

数字信号处理实验四:IIR数字滤波器设计及软件实现

一、实验目的 1. 掌握MATLAB中进行IIR模拟滤波器的设计的相关函数的应用; 2. 掌握MATLAB的工具箱中提供的常用IIR数字滤波器的设计函数的应用; 3.掌握MATLAB的工具箱中提供的模拟滤波器转数字滤波器的相关的设计函数的应用。 二、实验内容 本实验为…

s32k314【入门新手篇】-开发环境安装【ds32开发平台】

软件包下载 登录nxp官网下载:https://www.nxp.com/ 然后输入关键字:S32 查看 下载安装包 以上三步请先注册好并登录你的个人账号 下载完之后如下: 软件安装 eb安装并激活【试用版】 激活 2 安装ds 弹出什么就安装什么就好了。 …

算法设计与分析部分题目解释

目录 第1讲算法引论 作业1-1 1. (单选题, 5分)算法研究领域包括的三个主要方面为( A ) 2. (单选题, 5分)下面说法关于算法与问题的说法错误的是(B)。 3. (单选题, 5分)下面关于程序和算法的说法不正确的是(B)。 4. (单选题,…

[C#]使用OpenCvSharp图像滤波中值滤波均值滤波高通滤波双边滤波锐化滤波自定义滤波

在使用OpenCvSharp进行图像滤波处理时,各种滤波方法都有其特定的用途和效果。以下是对中值滤波、均值滤波、高通滤波、双边滤波、锐化滤波和自定义滤波的详细解释和归纳: 中值滤波(MedianBlur) 原理与作用:中值滤波是…

redis(17):什么是布隆过滤器?如何实现布隆过滤器?

1 布隆过滤器介绍 布隆过滤器(Bloom Filter)是一种空间效率极高的概率型数据结构,用于判断一个元素是否在一个集合中。它基于位数组和多个哈希函数的原理,可以高效地进行元素的查询,而且占用的空间相对较小,如下图所示: 根据 key 值计算出它的存储位置,然后将此位置标…

springCloud中将redis共用到common模块

一、 springCloud作为公共模块搭建框架 springCloud 微服务模块中将redis作为公共模块进行的搭建结构图&#xff0c;如下&#xff1a; 二、redis 公共模块的搭建框架 如上架构&#xff0c;代码如下pom.xml 关键代码&#xff1a; <dependencies><!-- SpringBoot Boo…

Pycharm 添加内容根

解决问题&#xff1a;包未能被正常引入时

【WRF调试运行第一期】安装WRF模型所需平台

WRF实践实操第一期&#xff1a;安装WRF模型所需平台 1 操作系统2 先决条件软件3 程序流&#xff08;Program Flow&#xff09;4 文件说明软件安装1-Cygwin参考 安装 WRF&#xff08;Weather Research and Forecasting&#xff09;模型需要准备适当的硬件和软件平台。 相关介绍可…

【计算机毕设】基于SpringBoot的中小企业设备管理系统设计与实现 - 源码免费(私信领取)

免费领取源码 &#xff5c; 项目完整可运行 &#xff5c; v&#xff1a;chengn7890 诚招源码校园代理&#xff01; 1. 研究目的 在中小企业中&#xff0c;设备管理是确保生产和运营效率的重要环节。传统的设备管理通常依赖于手工记录和人工管理&#xff0c;容易导致数据不准确、…

全球首款AR电脑上线,可投影100英寸屏幕

近日&#xff0c;Sightful公司推出了一款名为Spacetop G1的革命性笔记本电脑&#xff0c;将AR技术与传统笔记本电脑巧妙融合&#xff0c;打造出令人惊叹的全新办公体验。 全球首款AR电脑上线&#xff0c;可投影100英寸屏幕 不同于传统笔记本电脑依赖物理屏幕显示内容&#xff0…

C#WPF数字大屏项目实战11--质量控制

1、区域划分 2、区域布局 3、视图模型 4、控件绑定 5、运行效果 走过路过&#xff0c;不要错过&#xff0c;欢迎点赞&#xff0c;收藏&#xff0c;转载&#xff0c;复制&#xff0c;抄袭&#xff0c;留言&#xff0c;动动你的金手指&#xff0c;财务自由

OJ题目【栈和队列】

题目导入 栈&#xff1a; 题目一&#xff1a;有效的括号题目二&#xff1a;用栈实现队列 队列 题目&#xff1a;实现循环队列 栈 题目一 有效的括号 题目要求 给定一个只包括 ‘(’&#xff0c;‘)’&#xff0c;‘{’&#xff0c;‘}’&#xff0c;‘[’&#xff0c;‘…

四川汇聚荣聚荣科技有限公司正规吗?

在当今数字化时代&#xff0c;科技公司如雨后春笋般涌现&#xff0c;而四川汇聚荣聚荣科技有限公司作为其中的一员&#xff0c;其正规性自然成为外界关注的焦点。接下来的内容将围绕这一问题展开深入探讨。 一、公司概况四川汇聚荣聚荣科技有限公司是一家位于成都的高新技术企业…

兆易创新:周期已至 触底反弹?

韩国那边来的数据啊&#xff0c;4月芯片库存同比下降33.7%&#xff0c;创近10年以来&#xff08;最&#xff09;大降幅&#xff0c;芯片出口同比增长53.9%&#xff0c;其中存储芯片出口额同比大幅增长98.7%&#xff0c;开启了涨价模式。沉寂一年多的存储芯片迎来了景气周期。 所…

IO进程线程(五)库的制作、进程

文章目录 一、库&#xff08;一&#xff09;静态库1. 概念2. 制作3. 使用&#xff08;编译&#xff09;&#xff08;1&#xff09;生成可执行文件&#xff08;2&#xff09;运行 &#xff08;二&#xff09;动态库&#xff08;共享库&#xff09;1. 概念2. 制作3. 生成可执行文…

9. MySQL事务、字符集

文章目录 【 1. 事务 Transaction 】1.1 事务的基本原理1.2 MySQL 执行事务的语法和流程1.2.1 开始事务1.2.2 提交事务1.2.3 回滚&#xff08;撤销&#xff09;事务实例1&#xff1a;一致性实例2&#xff1a;原子性 【 2. 字符集 和 校对规则 】2.1 基本原理2.2 查看字符集查看…

Web3.0区块链技术开发方案丨NFT项目开发

在Web3.0时代&#xff0c;非同质化代币&#xff08;NFT&#xff09;的概念正在引领着数字资产领域的变革和创新。NFT作为区块链上的数字资产&#xff0c;具有独一无二的特性&#xff0c;可以代表任何形式的数字或实物资产&#xff0c;并在区块链上进行唯一标识和交易。本文将探…

ElementUI中date-picker组件,怎么给选择一个月份范围中大写月份改为阿拉伯数组月份(例如:一月、二月,改为1月、2月)

要将 Element UI 的 <el-date-picker> 组件中的月份名称从中文大写&#xff08;如 "一月", "二月"&#xff09;更改为阿拉伯数字&#xff08;如 "1月", "2月"&#xff09;&#xff0c;需要进行一些定制化处理。可以通过国际化&a…