【MySQl】MySQL概述 | 数据库的操作 | MySQL的编码问题 | 连接器的工作流程

文章目录

    • 一、MySQL概述
          • 1.数据库的概念
            • MySQL
            • MySQL中支持的数据类型:
          • 2.数据库的操作
            • 1.创建数据库
            • 2.查看数据库
            • 3.选中数据库
            • 4.删除数据库
          • 3.数据表的操作
            • 1.创建表
            • 2.查看当前数据库中的所有表
            • 3.查看指定表的结构
            • 4.删除表
    • 二、MySQL的编码问题
            • 常见的编码类型
          • 连接器的工作流程
            • 方法一:连接器的UTF8
            • 方法二:连接器是GBK


文章目录

    • 一、MySQL概述
          • 1.数据库的概念
            • MySQL
            • MySQL中支持的数据类型:
          • 2.数据库的操作
            • 1.创建数据库
            • 2.查看数据库
            • 3.选中数据库
            • 4.删除数据库
          • 3.数据表的操作
            • 1.创建表
            • 2.查看当前数据库中的所有表
            • 3.查看指定表的结构
            • 4.删除表
    • 二、MySQL的编码问题
            • 常见的编码类型
          • 连接器的工作流程
            • 方法一:连接器的UTF8
            • 方法二:连接器是GBK

一、MySQL概述

1.数据库的概念
  • 数据库是一个广义的概念

    1.表示一门学科

    2.表示一类管理数据的软件

    3.表示某个具体的数据库软件

    4.表示部署了某个数据库软件的主机

​ 一个数据库服务器上,可以把很多有业务联系的表,放在一起,构成一个逻辑上的“数据集合”

数据库,是管理数据的软件->增删改查(CRUD)

Oracle 、MySQL 、SQLServer 、SQLite 是关系型数据库,使用“表”来组织数据

redis 、MongoDB、HBase 是非关系型数据库,使用“文档”/"键值对"来组织数据

MySQL

MySQL是一个“客户端-服务器”结构的软件

MySQL本体是服务器,在服务器这边来负责存储和管理数据。数据存储在硬盘上。

MySQL中支持的数据类型:

​ 一个表,包含很多行,每一行也称为一条记录。一个行可以有很多列,每一列也称为是一个字段。每个列都是有一个具体的类型。

数值类型:

在这里插入图片描述

  • 数值类型可以指定为无符号(unsigned),表示不取负数。

  • 1字节(bytes)= 8bit

  • 浮点数中,()用来表示精度:M表示小数的长度 D表示小数点后的位数

    double(3,1) 表示数的长度是3,小数点后有1位 34.1 、12.3

  • 此处的Double和Float和Java、C类似,都是通过IEEE745标准的浮点数。

  • DECIMAL:精度更高的浮点数(采用字符串的方式来存储小数),精度高、运算速度慢、空间开销大。

在这里插入图片描述

  • varchar :变长的字符串 。size表示的是该类型里最多存储几个字符(不是字节)

在这里插入图片描述

  • 保存时间戳

时间戳 :以1970年1月1日0时0分0秒为基准,计算当前时刻的基准时间的差值

2.数据库的操作

1.命令行客户端

2.图形化客户端

1.创建数据库
create database 数据库名字;
create database if not exists 数据库名字; //
  • 如果已经存在,则不会再继续创建。在批量执行的情况下,避免sql报错。

在创建数据库的时候,可以手动指定字符集

character set 字符集名字
charset 字符集名字

create database if not exists day5_09 charset utf8;
  • mysql默认的字符集是拉丁文,不支持中文。要保存中文,必须要在创建数据库的时候,手动指定编码方式为支持中文的编码方式(GBK、UTF8)
2.查看数据库

列出当前mysql服务器上一共都有哪些数据库

show databases;

sql命令都要以英文分号结束

当中的mysql数据库可以用来修改一些配置

3.选中数据库
use 数据库名;

​ 数据库中,最重要的操作就是针对表进行增删改查。表是从属于数据库的,要准对表操作,就要先确定是那个数据库的表。

4.删除数据库
drop database 数据库名;

删除操作,删掉的不仅仅是database,同时也删掉了database中所有的表,以及表中的所有的数据。

线上数据库 / 生产环境数据库(被用户访问的数据库,存储真实的用户信息)

线下数据库 (在开发、测试阶段自己构造的“假的”数据)

为了避免误操作删除数据库,

1.要做好权限的限制

2.及时做好数据的备份

3.数据表的操作
  • 操作表的前提是先选中数据库
use 数据库名;
1.创建表
create table 表名(列名 类型,列名 类型...);
create table student(id int,name varchar(10));
  • 如果表名/列名和关键字相同,需要用反引号 引起来
2.查看当前数据库中的所有表
show tables;
3.查看指定表的结构
desc 表名;
  • desc(describe描述)

在这里插入图片描述

Field:表示字段(列)

这里的int(11)表示的是显示的宽度,显示的时候最多占11个字符,和存储的容量无关

Null:空值,表格中的这个格子是没有填写的,此处写作YES允许这一列为null

Key:表示当前这一列的约束

Default: 默认值。

Extra:额外信息。

4.删除表
drop table 表名;

​ 删表比删数据库更严重,删库会在第一时间报错,可以第一时间进行处理。但是删表操作,程序不一定第一时间报错。发现时间就会更晚。

二、MySQL的编码问题

常见的编码类型
  • ASCII编码:单字节(8bit)7bit存储数据,最高位是奇偶校验位(只支持英语)
  • Latin1编码(ISO-8859-1):单字节编码,向下兼容ASCII,8位存储

​ Latin1编码采用了单字节内所有的空间,在支持Latin1编码的系统中传输和存储其他任何编码的字节流都不会被抛弃,也就是说,把其他任何编码的字节流当作Latin1编码看待都没有问题,MySQL的默认编码就是Latin1

  • Unicode编码:将世界上所有的符号都纳入其中。每一个符号都给予一个独一无二的编码

​ Unicode是一个很大的符号集,可以容纳100多万个符号,只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储,如果所有字符都按照最大存储空间存储,那必然会浪费很大的空间,比如英文字母只需要1个字节,但是会用三个字节来存储。

  • UTF-8编码:变长编码,使用1~4个字节来表示一个符号

  • GBK编码:双字节编码。

​ mysql服务器默认使用latin1字符集,但是latin1不支持中文,客户端发送的GDK,经过连接器放到服务器时,发现服务器采用的是latin1格式,GBK是2字节编码,转换成latin1字节编码,就相当于大网捞小鱼,会丢失字节。存的数据就是错误的数据。mysql就不让进行存储,提示1366错误的原因。”"ERROR 1366 (HY000): Incorrect string value: ‘\xD5\xC5\xC8\xFD’ ““for column ‘sname’ at row 1”,此时需要将服务器的字符集设置成UTF8,通过变长编码保障数据的完整性。

在创建数据库的时候,需要设置charset = utf8

cmd chcp//查看本机的字符集
    //活动代码页: 936

window客户端的字符集: 936 ->GBK

我们发现,客户端输入的字符集是GBK,MySQL服务器建表时存储数据采用的字符集是utf8

在这个过程中,经历了编码的转换。

show character set;
//查看数据库支持的所有的字符集

status;
// 查看系统当前状态,里面可以看到部分字符集设置。

show variables like '%char%'
// 查看系统字符集设置,包括所有的字符集设置

通过connection 连接器来实现转换

连接器的工作流程

1.客户端的字符先发给连接器,转换成连接器的编码格式,进行临时存储。

2.连接器再次转换成服务器需要的编码

3.服务器返回的结果,先通过连接器,转换成与客户端一致的编码

方法一:连接器的UTF8
1)设置客户端的字符集
set character_set_client=gbk;
2)设置连接器的字符集
set character_set_connection=utf8;
3)设置返回结果的字符集
set character_set_results=gbk;

在这里插入图片描述

  • cmd中的字符集是GBK,同理要在cmd上显示的结果也是GBK编码的。

  • 服务器指定的是utf8格式

    1.客户端输入的GBK会先通过连接器,转换成UTF8,临时存储在连接器中

    2.连接器发现服务器的编码类型也是UTF8,直接发送给服务器进行存储

    3.服务器直接把UTF8的数据发给连接器,连接器发现客户端的编码方式是GBK,于是进行转换。

方法二:连接器是GBK
set names gbk;
相当于下面三行
set character_set_client=gbk;
set character_set_connection=gbk;
set character_set_results=gbk;

在这里插入图片描述

在这里插入图片描述

1.客户端发送的是GBK格式,连接器此时也是GBK格式的,顺利通过连接器

2.连接器向服务器发送数据,发现服务器是UTF8格式的,进行转换

3.服务器先向连接器发送数据的时候,发现连接器的GBK格式的,同样要进行转换。连接器返回客户端时,由于都是GBK格式的,直接返回cmd进行显示。

点击移步博客主页,欢迎光临~

偷cyk的图

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

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

相关文章

Linux文件:重定向底层实现原理(输入重定向、输出重定向、追加重定向)

Linux文件:重定向底层实现原理(输入重定向、输出重定向、追加重定向) 前言一、文件描述符fd的分配规则二、输出重定向(>)三、输出重定向底层实现原理四、追加重定向(>>)五、输入重定向…

邦注科技 工业冷水机的风冷和水冷的区别介绍

工业冷水机在工业生产中扮演着重要角色,特别是在需要精确控制温度的应用中。风冷式冷水机和水冷式冷水机是两种常见的类型,它们之间存在一些显著的区别。 热交换的来源不同: 风冷式冷水机:热交换的来源是气体。它采用空气冷却方…

java技术:nacos

目录 一、docker安装 1、创建一个nacos 2、复制配置信息出来(方便修改配置文件) 3、删除nacos 4、修改配置文件(主要是一下几个) 6、创建数据库 nacos 7、重启nacos mysql 一、docker安装 1、创建一个nacos docker run …

随笔:棋友们

我是在小学二年级学会中国象棋的,准确说,是学会象棋的下棋规则的,师傅是二舅。我最早的对手就是同学波仔。波仔比我略早学会象棋,总用连珠炮欺负我,开局几步棋就把我将死。我不知道怎么破解。轮到我先走时,…

几个排序器的verilog及其资源占用、延时分析

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 前言 因为课题需要,调研了几个快速排序方法,并手写或者改进了若干待测试对象,包括记分板型冒泡排序(这个是别人的&#xff09…

Spring Security实现用户认证二:前后端分离时自定义返回Json内容

Spring Security实现用户认证二:前后端分离时自定义返回Json内容 1 前后端分离2 准备工作依赖WebSecurityConfig配置类 2 自定义登录页面2.1 Spring Security的默认登录页面2.2 自定义配置formLogin 3 自定义登录成功处理器4 自定义登录失败处理器5 自定义登出处理器…

如何快速找出文件夹里的全部带有中文纯中文的文件

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 步骤 1、打开工具,切换到批量复制文件 2、鼠标移到右侧,点击搜索添加 3、设定查找范围、指定为文件、勾选 包含全部子文件夹&#x…

254 基于matlab的钢筋混凝土非线性分析

基于matlab的钢筋混凝土非线性分析,根据梁本构关系,然后进行非线性分析,绘制弯矩-曲率曲线。可设置梁的截面尺寸、混凝土本构,钢筋截面面积等相关参数,程序已调通,可直接运行。 254 钢筋混凝土非线性分析 弯…

回文数[简单]

优质博文:IT-BLOG-CN 一、题目 给你一个整数x,如果x是一个回文整数,返回true;否则返回false。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121是…

单位个人如何向期刊投稿发表文章?

在单位担任信息宣传员一职以来,我深感肩上的责任重大。每月的对外信息宣传投稿不仅是工作的核心,更是衡量我们部门成效的重要指标。起初,我满腔热血,以为只要勤勉努力,将精心撰写的稿件投至各大报社、报纸期刊的官方邮箱,就能顺利登上版面,赢得读者的青睐。然而,现实远比理想骨…

最小覆盖子串 ---- 滑动窗口

题目链接 题目: 分析: 当我们找到一组符合的子字符串时, 找下一组让left, 那么剩余的子字符串要么还符合条件, 要么少了一种字符, right一定不用回退, 所以可以使用滑动窗口因为题目中说字符串中自包含英文字母, 所以我们可以使用hash数组 定义left 0;right 0;进窗口进窗口…

如何为没有域名的IP地址申请SSL证书

为没有域名的IP地址申请SSL证书的流程相对直接,但需要确保满足一些特定条件。以下是简化的步骤: 1、确保IP地址是公网IP:你必须拥有一个固定的公网IP地址,因为私有IP地址无法用于申请SSL证书。 2、选择证书颁发机构(…

什么是Zoho CRM客户关系系统管理?

以客户为中心的商业时代,卓越的客户体验已成为企业持续增长与成功的关键,为了在这场激烈的市场竞争中脱颖而出,企业需要一套强大、灵活且智能的客户关系管理系统——Zoho CRM应运而生,它不仅是管理客户信息的工具箱,更是驱动业务增…

利用远程控制软件FinalShell远程连接虚拟机上的Linux系统(Windows)

一. VMware Workstation 安装CentOS Linux操作系统 传送门:VMware Workstation 安装CentOS Linux操作系统 1.右键打开终端 2.输入ifconfig 找到ens33对应 inet的id,这个就是虚拟机的ip地址图中所示为:192.168.5.128 3.打开finalshell 如…

[ciscn 2022 东北赛区]math

1.题目 import gmpy2 from Crypto.Util.number import * from flag import flag assert flag.startswith(b"flag{") assert flag.endswith(b"}") messagebytes_to_long(flag) def keygen(nbit, dbit):if 2*dbit < nbit:while True:a1 getRandomNBitIn…

渲染农场是什么意思?瑞云渲染为你解答

渲染农场是一种通过集合多台计算机的计算能力来加速图像渲染过程的系统。它尤其适用于动画、电影特效和高端视觉效果的制作&#xff0c;这些领域通常需要处理非常复杂和计算密集型的渲染任务。 渲染农场就是一大群电脑&#xff0c;他们一起可以快速渲染出漂亮的图像。在做动画片…

【Linux进程通信 —— 管道】

Linux进程通信 —— 管道 进程间通信介绍进程间通信的概念进程间通信的目的进程间通信的本质进程间通信的分类 管道什么是管道匿名管道匿名管道的原理pipe用fork来共享管道原理站在文件描述符角度-深度理解管道站在内核角度-管道本质管道读写规则管道的特点管道的四种特殊情况管…

K210开发板MicroPython开发环境搭建

一、安装CanMV IDE开发软件 1、进入如下连接 https://developer.canaan-creative.com/resource 2、点击下载 3、下一步 4、修改安装路径&#xff0c;下一步 5、接受许可下一步 6、下一步 7、安装 8、完成 9、区域①菜单栏&#xff1a;操作文件&#xff0c;使用工具等。…

HCIP【VLAN综合实验】

目录 一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 三、实验思路&#xff1a; 四、实验步骤&#xff1a; 1、在交换机SW1,SW2,SW3配置VLAN和各个接口对应类型的配置 2、在路由器上面配置DHCP服务 一、实验拓扑图&#xff1a; 二、实验要求&#xff1a; 1、PC1 …

【动态规划五】回文串问题

目录 leetcode题目 一、回文子串 二、最长回文子串 三、分割回文串 IV 四、分割回文串 II 五、最长回文子序列 六、让字符串成为回文串的最少插入次数 leetcode题目 一、回文子串 647. 回文子串 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/…