【MySQL】——数据类型及字符集
🎃个人专栏:
🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客
🐳Java基础:Java基础_IT闫的博客-CSDN博客
🐋c语言:c语言_IT闫的博客-CSDN博客
🐟MySQL:数据结构_IT闫的博客-CSDN博客
🐠数据结构:数据结构_IT闫的博客-CSDN博客
💎C++:C++_IT闫的博客-CSDN博客
🥽C51单片机:C51单片机(STC89C516)_IT闫的博客-CSDN博客
💻基于HTML5的网页设计及应用:基于HTML5的网页设计及应用_IT闫的博客-CSDN博客
🥏python:python_IT闫的博客-CSDN博客
🐠离散数学:离散数学_IT闫的博客-CSDN博客
欢迎收看,希望对大家有用!
目录
🎯概述:
🎯数值型
🎃整数型
🎃小数类型
🎐 浮点数
🎯日期时间型
🎯字符串类型
🎯mysql字符集问题
🎯概述:
MySQL数据类型(列类型)可归纳为数值型、时间日期型和字符型。
数值型:
整形:tinyint/smallint/mediumint/int/bigint
小数型:Float(D,M),decimal(D,M)
字符串型:
Char(M)
Varchar(M)
Text 文本类型
日期/ 时间型:
Date 日期
Time 时间
Datetime 日期时间型
TIMESTAMP 时间戳类型
Year 年类型
🎯数值型
🎃整数型
tinyint(1), smallint(2), mediumint(3),int(4), bigint(8)。括号中表示该类型所占空间的长度(字节数)
| 类型 | 大小 | 范围(有符号) | 范围(无符号) | 用途 |
| TINYINT | 1 字节 | (-128,127) | (0,255) | 小整数值 |
| SMALLINT | 2 字节 | (-32 768,32 767) | (0,65 535) | 大整数值 |
| MEDIUMINT | 3 字节 | (-8388 608,8388 607) | (0,16777215) | 大整数值 |
| INT或INTEGER | 4 字节 | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
| BIGINT | 8字节 | (-9,223,372,036,854,775,808,9223372036854775807) | (0,18446744073709551615) | 极大整数值 |
整形系统的可选参数: XXint(M) unsigned zerofill
例: age tinyint(4) unsigned 或者 stunum smallint(6) zerofill
Unsigned: 代表此列为无符号类型,会影响到列的存储范围(范围从0 开始)
(不加unsigned, 则代表该列默认是有符号类型,范围从负数开始)
列可以声明默认值,而且推荐声明默认值
Not null default 0;
Zerofill :代表0 填充,即:如果该数字不足参数M位,则自动补0,补够M位。
1. 如果没有zerofill 属性,单独的参数M,没有任何意义
2. 如果设置某列为zerofill, 则该列已经默认为unsigned, 无符号类型,M代表该列的显示宽度。
🎃小数类型
🎐 浮点数
小数型: float(M,D),decimal(M,D)
float(M,D): 浮点小数,代表可存储一共M位(不含小数点),其中,小数点后D位
decimal(M,D) :定点小树, M,D的意义同上.
区别: decimal 比float 精度更高,适合存储货币等要求精确的数字.
见下例:

🎯日期时间型
mysql 时间类型有,date,time,datetime,timestamp,year五种。
date类型: 支持的范围为’1000-01-01’到’9999-12-31’
time类型: 支持的范围是’-838:59:59’到’838:59:59’
datetime类型:支持的范围是’1000-01-01 00:00:00’到’9999-12-31 23:59:59’
timestamp类型:时间戳,就是表示“当前时刻”, 用int 来存储,是1970-01-01 00:00:00 到当前的秒数,类似函数now()获得的值,用于INSERT或UPDATE操作时自动获得当前时间。
一般存注册时间,商品发布时间等,并不是用datetime 存储,而是用时间戳。因此datetime 虽然直观,但计算不便。
year类型: 四位字符串,范围为’1901’到’2155’;四位数字,范围为1901到2155;两位字符串,范围为’00’到’99’;两位整数,范围为1到99
在mysql中除了timestamp 类型允许有默认值外,其他时间类型都不能有默认值,不然会报错。
mysql常用时间日期函数
获取当前日期和时间: now();
获取当前日期: curdate();
获取当前时间:curtime();
将具体时间转换为时间戳:unix_timestamp();
将时间戳转换为时间:from_unixtime();
🎯字符串类型
mysql提供的有CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM和SET。
Char 定长类型
Char(M),M 代表宽度,( 即:可容纳的字符数),0<=255 之间
例: char(10), 则能输入10 个字符.
Varchar 变长类型
varchar(M),M 代表宽度,( 即:可容纳的字符数),0<=M<=65535(以ascii 字符为例, utf8 22000左右)
定长二进制字符串binary:类似char,应该设定长度值,只是按“二进制字节”保存存字符数据,最大255个字节,无编码问题
变长二进制字符串varbinary:类似varchar,需要设定长度值,只是按“二进制字节”存字符数据,最大65532个字节,无编码问题
文本列类型text:用于存储普通文本,不受行的最大长度的限制,同类还有:tinytext, mediuntext, longtext
二进制列类型blob:用于存储二进制字节内容,不受行的最大长度的限制,同类的还有:tinyblob, mediumblob, longblob
枚举类型enum: 类似单选项应用中的多个选项值,最大65535个选项值;使用形式:enum(‘value1’, ‘value2’, … );存储数据的时候其实存的是一个对应的数字序号(从1开始)
set类型:类似多选项应用中的多个选项,最多64个选项,使用形式:set(‘value1’, ‘value2’, …); 内部存储的也是数字(依次为1,2,4,8, ….),但可以是多个值,比如5就表示2个值(1,4),14就表示3个值(2,4,8)
Char(M) 如何占据M个字符宽度?
答:如果实际存储内容不足M个,则后面加空格补齐
取出来的时候,再把后表面的空格去掉. (所以如果内容最后有空格,将会被清除)速度上:定长速度快些。
Char 与varchar 相关实验

Concat 连接的意思
SET 和 enum
create table seTest(
id int auto_increment,
hobby set('篮球','足球','羽毛球','乒乓球','棒球'),
gender enum('male','female','not know'),
primary key(id)
)engine = myisam default charset = utf8;
insert into seTest(hobby,gender) values('篮球','male'),('篮球,足球,棒球','not know');
insert into seTest(hobby,gender) values('篮球','male,female');
insert into seTest(hobby,gender) values('篮球','male female');
insert into seTest(hobby,gender) values('排球','male female');
mysql> show warnings;

mysql> select * from setest;

可以看到,当插入的值跟set 、enum 字段值要求不符时,会插入空值。
常用字符串函数
concat(column|str1,column | str2,….)将多个字符串首尾相连后返回。
concat_ws(separator,str1,str2,….)将多个字符串指定连接符separator的首尾相连后返回
substr(str,pos[,len]) 从字符串中的指定位置pos开始取一个字串返回
repeat(str,count) 将字符串str重复count次后返回
reverse(str) 将字符串str反转后返回
🎯mysql字符集问题
Mysql 的字符集设置非常灵活
可以设置服务器默认字符集
数据库默认字符集
表默认字符集
列字符集
(如果某一个级别没有指定字符集,则继承上一级)
set names gbk
set names utf8
执行show variables like 'character%',获取字符集配置为:
由于CMD命令行只支持系统当前编码,所以一般需要将CMD与MYSQL服务器的交互编码设置为gbk才能正常显示utf8的数据。
character_set_client、character_set_connection和character_set_results变成了utf8,可以看出set names就是设置这三个参数的值。一个select执行的过程应该是:client——>connection——>server/database——>results——>connection——>client,任何一个环节的字符集不兼容都会出现乱码。
1、用户通过mysql.exe来操作mysqld.exe
2、真正的SQL执行是mysqld.exe来执行
3、mysql.exe将数据传入mysqld.exe的时候,没有告知其对应的符号规则(字符集),而mysqld也没有能力自己判断,就会使用自己默认的(字符集);
解决方案:
mysql.exe如果告知mysqld.exe对应的字符集类型为GBK
深层原理:
客户端、服务器、连接层
客户端传入数据给服务器:client
服务器返回数据给客户端:server
客户端与服务器端之间的连接:connection

相关文章:
【MySQL】——数据类型及字符集
🎃个人专栏: 🐬 算法设计与分析:算法设计与分析_IT闫的博客-CSDN博客 🐳Java基础:Java基础_IT闫的博客-CSDN博客 🐋c语言:c语言_IT闫的博客-CSDN博客 🐟MySQL:…...
Redis cluster集群设置密码
Redis cluster集群设置密码 1 备份数据 # 链接redis集群,执行rdb快照 bgsave # 备份dump.rdb文件 cp /data/redis/cluster/dump.rdb /data/redis/cluster/backup/dump.rdb.202312202 设置密码 必须保证每个节点的密码保持一致,不然 Redirected 的时候会失败 2.1…...
Docker 核心技术
Docker 定义:于 Linux 内核的 Cgroup,Namespace,以及 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术,由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器Docke…...
15 使用v-model绑定单选框
概述 使用v-model绑定单选框也比较常见,比如性别,要么是男,要么是女。比如单选题,给出多个选择,但是只能选择其中的一个。 在本节课中,我们演示一下这两种常见的用法。 基本用法 我们创建src/component…...
go语言指针变量定义及说明
go语言指针主要需要记住两个特殊符号, 一个是 & 用来获取变量对应的内存地址 另一个是 * 用来获取指针对应的变量值 下面是个最简单的go语言指针说明 package mainimport "fmt"//指针为内存地址func main() {var a string "指针对应的变量&…...
基于“Galera+MariaDB”搭建多主数据库集群的实例
1、什么是多主数据库集群 多主数据库集群是一种数据库集群架构,每个节点都可以接收写入操作和读取操作,并且通过心跳机制同步数据,保证数据一致性和高可用性。因多主数据库集群每个节点都可以承担读写操作,因此它可以充分利用各个…...
arcgis javascript api4.x加载天地图cgs2000坐标系
需求:arcgis javascript api4.x加载天地图cgs2000坐标系 效果: 示例代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"wid…...
算法学习——回溯算法
回溯算法 理论基础回溯法的效率回溯法解决的问题回溯法模板 组合思路回溯法三部曲 代码 组合(优化)组合总和III思路代码 电话号码的字母组合思路回溯法来解决n个for循环的问题回溯三部曲代码 组合总和思路代码 组合总和II思路代码 理论基础 什么是回溯法…...
C语言—小小圣诞树
这个代码会询问用户输入圣诞树的高度,然后根据输入的高度在控制台上显示相应高度的圣诞树。 #include <stdio.h>int main() {int height, spaces, stars;printf("请输入圣诞树的高度: ");scanf("%d", &height);spaces height - 1;st…...
Android消息公告上下滚动切换轮播实现
自定义控件 通过继承TextSwitcher实现 直接上代码 public class NoticesSwitcher extends TextSwitcher implements ViewSwitcher.ViewFactory {private Context mContext;private List<Notice> mData;private final long DEFAULT_TIME_SWITCH_INTERVAL 1000;//1spri…...
tensorflow入门 自定义模型
前面说了自定义的层,接下来自定义模型,我们以下图为例子 这个模型没啥意义,单纯是为了写代码实现这个模型 首先呢,我们看有几个部分,dense不需要我们实现了,我们就实现Res,为了实现那个*3,我们…...
虚拟机启动 I/O error in “xfs_read_agi+0x95“
1.在选择系统界面按e 进入维护模式 2.找到ro把ro改成 rw init/sysroot/bin/sh 然后按Ctrlx 3.找到坏掉的分区,以nvme0n1p3为例进行修复 xfs_repair -d /dev/nvme0n1p3 4.init 6 重新启动 以下情况 先umount 再修复 则修复成功...
【MYSQL】-库的操作
💖作者:小树苗渴望变成参天大树🎈 🎉作者宣言:认真写好每一篇博客💤 🎊作者gitee:gitee✨ 💞作者专栏:C语言,数据结构初阶,Linux,C 动态规划算法🎄 如 果 你 …...
网络协议小记
一、TCP/IP协议 作为一个小萌新,当然我无法将tcp/ip协议的大部分江山和盘托出,但是其中很多面试可能问到的知识,我觉得有必要总结一下! 首先,在学习tcp/ip协议之前,我们必须搞明白什么是tcp/ip协议。 1、…...
STM32-I2C通讯-AHT20温湿度检测
非常感谢,提供的视频学习 https://www.bilibili.com/video/BV1QN411D7ak/?spm_id_from333.788&vd_source8ca4826038edd44bb618801808a5e076 该文章注意:串口显示中文会乱码,必须选用支持ASCII的串口助手,才能正常显示中文。…...
【机器学习】043_准确率、精确率、召回率
一、定义 在处理偏斜数据集时,通常使用不同的误差度量,而不仅仅是使用分类误差来衡量算法性能。 1. 混淆矩阵的概念 二分类问题的混淆矩阵为2X2矩阵,由四部分组成: 假阴性(FN):模型预测为负…...
【Qt开发流程】之文件目录、文件、输入和输出
概述 应用程序操作过程中,经常要对设备或文件进行读或者写操作。也会经常对文件及目录进行操作。 在Qt中,QIODevice类是Qt中所有进行I/O操作的设备的基类,比如QFile、 QIODevice为支持数据块读写的设备(如QFile、QBuffer和QTcpSo…...
CSS的基本选择器及高级选择器(附详细示例以及效果图)
Hi i,m JinXiang ⭐ 前言 ⭐ 本篇文章主要介绍HTML中CSS的基础选择及高级选择器(详解)以及部分理论知识 🍉欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁 🍉博主收将持续更新学习记录获…...
股票价格预测 | Python实现基于Stacked-LSTM的股票预测模型,可预测未来(keras)
文章目录 效果一览文章概述模型描述源码设计效果一览 文章概述 以股票价格预测为例,基于Stacked-LSTM的股票预测模型(keras),可预测未来。 模型描述 LSTM 用于处理序列数据,如时间序列、文本和音频。相对于传统的RNN,LSTM更擅长捕获长期依赖关系,...
数据可视化---离群值展示
内容导航 类别内容导航机器学习机器学习算法应用场景与评价指标机器学习算法—分类机器学习算法—回归机器学习算法—聚类机器学习算法—异常检测机器学习算法—时间序列数据可视化数据可视化—折线图数据可视化—箱线图数据可视化—柱状图数据可视化—饼图、环形图、雷达图统…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
selenium学习实战【Python爬虫】
selenium学习实战【Python爬虫】 文章目录 selenium学习实战【Python爬虫】一、声明二、学习目标三、安装依赖3.1 安装selenium库3.2 安装浏览器驱动3.2.1 查看Edge版本3.2.2 驱动安装 四、代码讲解4.1 配置浏览器4.2 加载更多4.3 寻找内容4.4 完整代码 五、报告文件爬取5.1 提…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

