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函数,这个函数只能查一个元素是否在对应的集合中,如下所示:

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

相关推荐
不会就选b1 天前
MySQL之视图
数据库·mysql
>no problem<1 天前
基于cola5.0的基础设施层的多数据库切换方案思路
数据库·spring boot·mybatisplus·cola5.0·数据库迁移适配
OceanBase数据库官方博客1 天前
OceanBase 赋能央国企:从发电到用电的全链路业务承载
数据库·oceanbase
瀚高PG实验室1 天前
pgsql-ogr-fdw
数据库·postgresql·瀚高数据库·highgo
IvorySQL1 天前
PostgreSQL 技术日报 (6月5日)|PG19 Beta1 上线,PGConf.PL 2026开启征稿
数据库·postgresql·区块链
abcy0712131 天前
pycharm python sqlalchemy mysql增删改查实例csdn
数据库·oracle
无风听海1 天前
IndexedDB 深度指南 浏览器中的事务型对象数据库
前端·数据库
咋吃都不胖lyh1 天前
langgraph基础示例
数据库
网管NO.11 天前
子查询进阶|EXISTS/IN/ANY/ALL,优化查询效率
数据库·sql
云服务器租用费用1 天前
2026年腾讯云OpenClaw(Clawdbot)+Skills云上部署及Windows本地集成轻松入门
运维·服务器·数据库·windows·云计算·腾讯云