MYSQL数据类型

目录

​编辑

数据类型分类

数值类型

tinyint

bit

小数类型

float

decimal

字符串类型

char

varchar

日期和时间类型

enum和set类型


数据类型分类

MYSQL中,常见的数据类型如下表所示:

数值类型

常见的几个数值类型的字节数和范围如下所示:

tinyint

这里以tinyint为例,插入数值类型时,插入的数据必须在对应的范围内,如果在MYSQL中插入不合法的数据,MYSQL一般都会直接拦截,如下所示:

所以,在MYSQL中,数据类型本身也是一种约束,这种约束主要是为了让使用者尽可能进行正确的插入,有了这种约束,就能保证数据库中的数据是可预期的,并且是完整的。

bit

在MYSQL中,也支持比特位类型,默认值为1,范围为1-64。如下所示:

小数类型

float

float的语法如下:

float(m,d) unsigned : M指定显示长度,d指定小数点位数,占用空间4个字节

示例如下:

如果传入的小数精度比定义的要多,MYSQL会进行四舍五入的方式进行存储,如下所示:

但即便如此,四舍五入后的结构也不能超过范围,否组会被拦截。

decimal

当数据较大时,float类型可能就无法准确存储了,会存在精度方面的损失。这是可以用decimal来存储数据,语法如下:

decimal(m, d) unsigned : 定点数m指定长度,d表示小数点的位数

使用与float类似,只不过float表示的精度大约是7位,decimal整数最大位数m为65,支持小数最大位数d是30,,如果d被省略,默认为0;如果m被省略,默认是10。如果希望小数精度高,使用decimal。

字符串类型

char

char的语法如下:

char(L): 固定长度字符串,L是可以存储的长度,单位为字符,最大长度值可以为255

char为固定长度字符串,无论用多少都会分配L空间的大小。

varchar

varchar为变长字符串,语法如下:

varchar(L): 可变长度字符串,L表示字符长度,最大长度65535个字节

这里的L为上限,用多少给多少,但是有1-3个字节用于记录数据大小,所有说有效字节数为65532。

当表的编码为utf8时,varchar(n)参数n的最大值是65532/3=21844(因为utf8中,一个字符占用3个字节),如果编码是gbk,varchar(n)参数n的最大值是65532/2=32766(因为gbk中,一个字符占用2字节)。同时,MYSQL对一行存储的数据大小也有要求,因此,实际存储的时候,若一行内还有其它列,这个存储的最大上限还要小一点。

日期和时间类型

常用的日期有如下几个:

date:日期'yyyy-mm-dd',占用三个字节

datetime:时间日期格式,'yyyy-mm-dd HH:ii:ss'表示范围从1000到9999,占用八字节

timestamp:时间戳,从1970年开始的yyyy-mm-dd HH:ii:ss格式和datetime完全一致,占用四个字节,该字段可自动更新,但是要加上default current_timestamp字段。

enum和set类型

enum提供了若干个选项的值,但是在最终的单元格中,实际只存储了其中一个值,而且处于效率考虑,这些值实际存储的是"数字";set类型与enum类似,只不过在最终的单元格中可以存储其中任意多个值。如下所示:

enum即可以写对应的数据,也可以写对应的下标,这个下标从1开始;set集合也可以传入对应的数字,只不过会将数字转换成对应的二进制,从低位到高位分别对应的定义set的几个选项,若对应的二进制位为1则插入数据库中,如下所示:

若要在set类型中插入多个选项,可以用逗号分隔,如下所示:

enum类型可以根据数据来查,也可以根据下标来查;set类型查找时可以使用find_in_set函数,这个函数只能查一个元素是否在对应的集合中,如下所示:

若要在表中将含有某一数据的行筛选出来,也可使用该函数,如下所示:

相关推荐
brave_zhao4 分钟前
openEuler下安装tar包解压工具
linux·服务器·数据库
fu15935745682 小时前
【边缘计算实战】P1:从零搭建边云任务卸载仿真实验台(Python 可复现)
数据库·python·边缘计算
隔壁阿布都2 小时前
MySQL 间隙锁死锁问题处理
数据库·mysql
qiuziqiqi3 小时前
Shopify推送订单及异常状态错误码说明
数据库
三品PLM系统4 小时前
【无标题】
数据库·制造·cadence·plm
ITxiaobing20234 小时前
如何构建IP维度的假量排查流程:以AppsFlyer Protect360判假后的实战为例
网络·数据库
Gent_倪4 小时前
万字详解:数据库、数据仓库、数据湖、湖仓一体
数据库·数据仓库·spark
ywl4708120875 小时前
mysql 锁定读和非锁定读
数据库·mysql
流浪0015 小时前
MySQL数据库基础篇(三):MySQL 数据库库级操作全解:创建、字符集、管理与备份恢复实战
数据库·mysql
昌旭咨询5 小时前
2026国内知名的CS认证咨询机构有哪些?企业该如何选择?
大数据·数据库·人工智能