mysql提供char、VARCHAR、TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT及二进制类型BINARY、VARBINARY、BLOB系列,用于不同场景的文本与二进制数据存储;CHAR为固定长度,适合定长字段如身份证号,空间固定但可能浪费;VARCHAR可变长度,节省空间,适用于用户名等变长文本,实际占用为内容长度加1-2字节长度标识;TINYTEXT至LONGTEXT支持255字节到4GB的文本存储,分别适用于短摘要到超大文档,但大字段影响性能且不建议直接索引;BINARY和VARBINARY用于无字符集的二进制数据如哈希值;BLOB类型对应TEXT的二进制版本,最大支持4GB,常用于图片或文件存储,但推荐仅存路径;选择应综合考虑数据长度、字符集、存储效率与查询性能。

MySQL 中提供了多种字符串类型,用于存储文本数据。不同类型的字符串适用于不同的使用场景,主要区别在于存储长度、是否可变、是否支持字符集和排序规则等。以下是常见的字符串类型:
CHAR
固定长度字符串,最大长度为 255 个字符。当你定义 CHAR(n) 时,MySQL 会始终分配 n 个字符的存储空间,不足部分用空格填充。适合存储长度固定的值,如性别、状态码、身份证号等。
- 存储空间固定,可能造成浪费
- 检索时尾部空格会被自动去除
VARCHAR
可变长度字符串,最大长度可达 65,535 字节(实际受行大小限制)。VARCHAR(n) 中的 n 表示最大字符数,只占用实际所需的空间 + 长度标识字节(1-2 字节)。
- 节省存储空间
- 适合存储长度变化较大的文本,如用户名、地址
- 需注意字符集影响(如 UTF8MB4 下一个字符最多占 4 字节)
TINYTEXT
用于存储小型文本片段,最大长度为 255 字节(约 255 字符,UTF8MB4 下约 63 个汉字)。
- 适合短篇文章摘要、备注等
- 比 VARCHAR 灵活,但有额外开销
TEXT
标准文本类型,最大长度约为 65,535 字节(64KB)。常用于存储较长内容,如文章正文、评论等。
- 不建议作为索引字段(只能前缀索引)
- 大字段可能影响查询性能
MEDIUMTEXT
中等长度文本,最大可存约 16MB(16,777,215 字节)。适合存储大量文本,如日志、小说章节。
LONGTEXT
最大文本类型,可存储约 4GB(4,294,967,295 字节)的数据。适用于超大文本内容,如文档全文、jsON 数据等。
- 注意:过大的数据应考虑是否真的存在数据库中
- 可能影响备份与恢复效率
BINARY 和 VARBINARY
类似于 CHAR 和 VARCHAR,但存储的是二进制字节流,不涉及字符集。适合存储加密数据、哈希值等。
BLOB 类型
用于存储二进制大数据,对应 TEXT 的二进制版本:
- TINYBLOB:最大 255 字节
- BLOB:最大 65KB
- MEDIUMBLOB:最大 16MB
- LONGBLOB:最大 4GB
- 常用于存储图片、文件等二进制内容(但一般推荐存路径)
基本上就这些。选择合适的字符串类型要考虑数据长度、性能、存储效率和实际用途。合理使用能提升数据库整体表现。


