MySQL里头各种数据库类型到底有哪些,简单说说它们的区别和用法
- 问答
- 2026-01-14 17:01:41
- 3
MySQL里的数据类型,简单说就是你在建表的时候,用来规定每个列(字段)能存什么样子数据的规则,比如这个列是专门放数字的,还是放文字的,或者是放日期、图片的,选对了类型,不仅能保证数据存得对,还能让数据库跑得更快,下面我就把主要的几种类型给你捋一捋。
数值类型
这类就是用来存数字类型
数字类型是用的最多的,主要分两大类:整型和浮点型(带小数的)。
整型就是存整数,比如人数、年龄、ID号,它们有几个不同的“尺寸”,区别在于能存的数字范围大小:

- TINYINT:最小的,范围很小,128到127,或者0到255(无符号时),常用来存一些状态码,比如性别(用0表示男,1表示女)。
- SMALLINT、MEDIUMINT:范围大一些,SMALLINT可以存几万的数,MEDIUMINT能存到一千六百万左右,根据你业务里数字可能的最大值来选。
- INT:这是最常用、最普通的整数类型,范围够大(正负二十亿左右),绝大多数需要整数的场景用它准没错,比如用户ID、文章ID。
- BIGINT:最大的整数类型,范围非常巨大,当你需要存像微博推文ID、电商订单号这种可能非常长的数字时,就用它。
浮点型用来存小数,比如价格、身高、体重。
- FLOAT 和 DOUBLE:它们存的是近似值,不是绝对精确的小数,DOUBLE比FLOAT更精确(小数点后位数更多),但也会占用更多空间,如果你存的是科学计算数据,或者对精度要求不是极高的小数(比如平均分),可以用它们。
- DECIMAL:这个类型存的是精确的小数,它是以字符串的形式来存储数字的,所以能确保计算时不会出现精度误差。这是最重要的区别,像银行账户余额、商品价格这种一分钱都不能差的钱数,必须用DECIMAL,你需要指定它的总位数和小数点后的位数,比如DECIMAL(10,2)表示总共10位数,其中2位是小数。
(参考来源:MySQL 8.0官方文档“Numeric Data Types”章节)
字符串类型
字符串类型就是存文本的,但也分存短文本和长文本。

短文本:
- CHAR:固定长度的字符串,比如你定义了CHAR(10),即使你只存了两个字“你好”,它也会占用10个字符的空间,不够的用空格补齐,优点是存取速度快,适合存储长度几乎固定的数据,比如身份证号、手机号码、固定的状态码(如"Y"或"N")"}
- VARCHAR:可变长度的字符串,比如VARCHAR(10),你存“你好”就只占两个字符的空间,它更节省空间,是最常用的字符串类型,用来存像用户名、文章标题、地址这种长度变化很大的数据,需要注意的是,它的最大长度限制你需要事先估计好。
长文本:
- TEXT:当你要存的内容非常长,超过了VARCHAR的最大限制(通常是65535个字符),比如一篇博客文章的内容、产品详细描述,就要用TEXT类型,TEXT本身也分不同尺寸,比如TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT,能容纳的文本长度依次增大。
- BLOB:这个类型和TEXT类似,但它不是存文本的,而是用来存二进制数据的,比如图片、音频、视频等文件,现在更常见的做法是把文件存在服务器的硬盘上,然后在数据库里只存这个文件的路径(用VARCHAR),这样效率更高。
(参考来源:MySQL 8.0官方文档“String Data Types”章节)
日期和时间类型

这类专门用来处理日期和时间。
- DATE:只存日期,不存时间,格式是‘YYYY-MM-DD’,2023-10-27’,适合存生日、入职日期等。
- TIME:只存时间,不存日期,格式是‘HH:MM:SS’,14:30:00’,适合存会议时间、打卡时间。
- DATETIME:最常用的日期时间类型,既存日期也存时间,格式是‘YYYY-MM-DD HH:MM:SS’,它存的是什么时间,读出来就是什么时间,跟数据库所在的时区无关,适合存像文章发布时间、订单创建时间这种需要完整时间戳的场景。
- TIMESTAMP:时间戳,它也和DATETIME一样存日期时间,但有个重要特点:**它会自动转换成分,比如你更新某条记录时,可以设置一个TIMESTAMP字段自动更新为当前时间,用来记录“最后修改时间”。
(参考来源:MySQL 8.0官方文档“Date and Time Data Types”章节)
其他特殊类型
- ENUM:枚举类型,相当于给你预设好几个可选值,这个字段的值只能是其中之一,比如你定义一个ENUM('男','女','未知'),那么性别字段就只能从这三个词里选一个存进去,能防止乱填。
- SET:集合类型,和ENUM类似,但可以一次选多个值,比如定义SET('读书','音乐','运动'),用户的爱好字段可以存‘读书,运动’。
总结一下怎么选:
- 数字:整数用INT,大整数用BIGINT,精确小数(尤其是钱)用DECIMAL。
- 文本:长度不定的用VARCHAR,很长的用TEXT,固定长度的用CHAR。
- 时间:需要完整日期时间用DATETIME,需要自动记录更新时间用TIMESTAMP。
- 特定选项:字段值只有少数几个固定选项时,可以考虑ENUM。
核心原则就是:在满足需求的前提下,选择最节省空间、最高效的数据类型。
本文由瞿欣合于2026-01-14发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://www.haoid.cn/wenda/80662.html
