编辑
2025-08-09
MySQL
00
请注意,本文编写于 119 天前,最后修改于 119 天前,其中某些信息可能已经过时。

目录

MYSQL的六大常见数据类型
1. 整数类型(Integer Types)
2. 浮点 / 定点类型(Floating-Point & Fixed-Point Types)
3. 字符串类型(String Types)
BLOB类型
BLOB的特点
与TEXT的区别
4. 日期时间类型(Date & Time Types)
5. 枚举与集合类型(Enum & Set Types)
6. 特殊类型(Special Types)

MYSQL的六大常见数据类型

在 MySQL 中有六大常见的数据类型(Data Types),即存储数据的不同格式和类别。MySQL 的常用数据类型可归纳为以下六种主要形态(分类),每种形态包含具体的子类型,适用于不同的场景:

1. 整数类型(Integer Types)

用于存储整数(无小数部分的数字),根据取值范围和存储空间分为不同子类型,适合存储计数、ID 等场景。
常用子类型:TINYINT(1 字节,范围 - 128-127 或 0~255)、SMALLINT(2 字节)、MEDIUMINT(3 字节)、INT(4 字节,最常用)、BIGINT(8 字节,适用于大数值如自增 ID)。

2. 浮点 / 定点类型(Floating-Point & Fixed-Point Types)

用于存储带小数的数字,区分 “近似值” 和 “精确值”。
浮点型(近似值):FLOAT(单精度,4 字节)、DOUBLE(双精度,8 字节),适合存储科学计算等对精度要求不极致的场景(可能有精度误差)。
定点型(精确值):DECIMAL(M,D)(M 为总位数,D 为小数位数),适合存储金额、汇率等需精确计算的场景(无精度损失)。

3. 字符串类型(String Types)

用于存储文本、字符序列等,根据长度和存储方式分为不同类型。
定长字符串:CHAR(N)(固定长度 N,不足补空格,适合短文本如手机号、密码哈希)。
变长字符串:VARCHAR(N)(长度可变,按实际内容存储,适合长度不固定的文本如用户名、描述)。
长文本 / 二进制:TEXT(长文本,如文章内容)、BLOB(二进制数据,如图片、文件)。

BLOB类型

在 MySQL 的字符串类型中,除了存储字符数据的CHAR、VARCHAR、TEXT等,还包含专门用于存储二进制数据的BLOB类型(Binary Large Object)。它们同属字符串类型体系,因为本质上都是存储字节序列,只是BLOB针对二进制数据(无字符集概念),而其他字符串类型针对字符数据(依赖字符集编码)。
字符串类型中的BLOB子类型
BLOB用于存储二进制数据(如图片、音频、视频、文件等字节流),根据存储容量分为以下子类型:

类型存储上限适用场景
TINYBLOB最大 255 字节小图标、缩略图、短二进制数据
BLOB最大 65,535 字节(64KB)小型图片(如头像)、短文件
MEDIUMBLOB最大 16,777,215 字节(16MB)中等大小图片、文档(如 PDF)
LONGBLOB最大 4,294,967,295 字节(4GB)大型文件、高清图片、视频片段等

BLOB的特点

二进制安全:存储原始字节流,不依赖字符集编码(与TEXT的核心区别,TEXT会受字符集影响)。
存储效率:按实际数据长度存储(类似VARCHAR的变长特性),不浪费空间。
使用限制:
不适合作为索引列(会严重影响查询性能)。
大文件(如超过 100MB)不建议直接存储,会导致数据库体积膨胀、备份缓慢、读写性能下降。

与TEXT的区别

BLOB:存储二进制数据(如010101字节流),无字符集,适合图片、文件等。
TEXT:存储字符数据(如"abc123"),依赖字符集(如utf8mb4),适合长文本(如文章内容)。
实际使用建议
小文件(如头像、图标,<1MB)可考虑BLOB存储,方便与业务数据关联。
大文件(如视频、高清图片)建议存储在文件系统(如服务器硬盘、云存储 OSS),仅在数据库中保存文件路径(用VARCHAR存储路径字符串),既能减轻数据库压力,又能提高访问效率。

4. 日期时间类型(Date & Time Types)

用于存储日期、时间或 datetime 组合,精确到秒或微秒。
常用类型:DATE(仅日期,格式YYYY-MM-DD)、TIME(仅时间,HH:MM

)、DATETIME(日期 + 时间,范围 1000-01-01~(到)9999-12-31)、TIMESTAMP(日期 + 时间,范围 1970-01-01~(到)2038-01-19,受时区影响)。

5. 枚举与集合类型(Enum & Set Types)

用于存储预定义的离散值,节省空间且限制输入范围。
ENUM:单选枚举,只能从预定义列表中选一个值(如ENUM('男','女','未知'))。
SET:多选集合,可从预定义列表中选多个值(如SET('足球','篮球','羽毛球'))。

6. 特殊类型(Special Types)

针对特定场景设计的类型,如 JSON、空间数据等。
JSON:存储 JSON 格式数据,支持快速解析和查询(适合半结构化数据)。
空间类型:如GEOMETRY、POINT、POLYGON等,用于存储地理空间数据(如经纬度、区域范围)。

本文作者:haotian

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!