本文介绍MySQL中的VARCHAR 数据类型和TEXT类型,区别,以及选择的使用场景。
一、VARCHAR
MySQL 中的 VARCHAR 数据类型的最大长度取决于字符集
。对于 MySQL 5.7 及以前的版本,最大长度是 255
个字节。从 MySQL 5.7.5 开始,VARCHAR 列可以存储最多 65535 个字节的数据。
对于 MySQL 8.0,VARCHAR 的最大长度支持变得更加宽松,最大可以支持到每行 65,535 字节(对于 ROW_FORMAT=COMPACT
和 ROW_FORMAT=DYNAMIC
),如果使用 UTF-8 字符集,每个字符可能占用多个字节,因此实际存储的字符数量会更少。
以下是创建一个使用 VARCHAR 数据类型的表的示例,该表在 MySQL 8.0 下使用 UTF-8 字符集,每个字符最多占用 4 个字节:
CREATE TABLE example (
text VARCHAR(65535) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci
);
在上面例子中,VARCHAR(65535) 能存储大约 65535/4 = 16383.75 个字符,考虑到 UTF-8 最多 4 个字节每字符,这是在 MySQL 8.0 下的理论上限。实际可用长度可能会更少,因为还需要额外的空间来存储 VARCHAR 的长度信息。
二、TEXT
MySQL中的TEXT类型有多种子类型,最大长度取决于具体的子类型:
TINYTEXT:最大长度为 255 个字符。
TEXT:最大长度为 65535 个字符。
MEDIUMTEXT:最大长度为 16777215 个字符。
LONGTEXT:最大长度为 4294967295 个字符。
实际上,这些长度是指字符数
,如果使用多字节字符集(如 UTF-8),实际存储的数据可能会更大。
下面是TEXT类型列的表的SQL示例:
CREATE TABLE example (
id INT PRIMARY KEY,
content TEXT
);
在上面示例中,content列可以存储最大为 65535 个字符的文本数据。如果需要更长的文本,可以选择使用MEDIUMTEXT
或LONGTEXT
类型。