MySQL 中 blob 和 text 数据类型详解
发布时间:2022-03-16 00:12:25
MySQL 中 blob 和 text 数据类型详解
一、blob 类型
blob(binary large object) 是一个可以存储二进制文件的容器,主要用于存储二进制大对象,例如可以存储图片,音视频等文件。按照可存储容量大小不同来分类,blob 类型可分为以下四种:
类型 | 可存储大小 | 用途 |
---|---|---|
TINYBLOB | 0 - 255字节 | 短文本二进制字符串 |
BLOB | 0 - 65KB | 二进制字符串 |
MEDIUMBLOB | 0 - 16MB | 二进制形式的长文本数据 |
LONGBLOB | 0 - 4GB | 二进制形式的极大文本数据 |
其中最常用的就是 blob 字段类型了,最多可存储 65KB 大小的数据,一般可用于存储图标或 logo 图片。不过数据库并不适合直接存储图片,如果有大量存储图片的需求,请使用对象存储或文件存储,数据库中可以存储图片路径来调用。
二、text 类型
text 类型同 char、varchar 类似,都可用于存储字符串,一般情况下,遇到存储长文本字符串的需求时可以考虑使用 text 类型。按照可存储大小区分,text 类型同样可分为以下四种:
类型 | 可存储大小 | 用途 |
---|---|---|
TINYTEXT | 0 - 255字节 | 一般文本字符串 |
TEXT | 0 - 65 535字节 | 长文本字符串 |
MEDIUMTEXT | 0 - 16 772 150字节 | 大文本数据 |
LONGTEXT | 0 - 4 294 967 295字节 | 极大文本数据 |
在日常场景中,存储字符串还是尽量用 varchar ,只有要存储长文本数据时,可以使用 text 类型。对比 varchar ,text 类型有以下特点:
- text 类型无须指定长度。
- 若数据库未启用严格的 sqlmode ,当插入的值超过 text 列的最大长度时,则该值会被截断插入并生成警告。
- text 类型字段不能有默认值。
- varchar 可直接创建索引,text 字段创建索引要指定前多少个字符。
- text 类型检索效率比 varchar 要低。