MYSQL表中的一行数据最多能存储多少个字

本章不翻mysql文档,不百度,就实战看看。

varchar最大值65535,受字符集影响

create table xyg (name varchar(65535)) default charset=utf8mb4;

运行结果如下:
运行结果

# floor(65535 * 4) 一个utf8mb4占4字节
create table xyg (name varchar(16383)) default charset=utf8mb4;

运行结果

char最大值255,不受字符集影响

create table xyg (name char(255)) default charset=utf8mb4;
create table xyg (name char(255)) default charset=utf8;

MYSQL表中的一行数据最多能存储多少个字_第1张图片

表一行最多支持65535字符(不包括text等)

create table xyg (id int, fav char(255), name varchar(16383)) default charset=utf8mb4;

int 占4个字节,
计算下:4 + (255 + 16383) * 4 = 66526 > 65535,应该创建失败,测试下
运行结果
果不其然,那么根据公式调整下参数

总的字符数 65535 / 4 = 16383
int 占4个字节,char占255个,那么name的varchar最大就应该是(65535-4)/4 - 255 = 16127

create table xyg (id int, fav char(255), name varchar(16127)) default charset=utf8mb4;

运行结果
好了,总结下上面的结论得出:

create table xyg (
id int, // int占4字节
fav char(M), // M * 4
name varchar(N) // n * 4
) default charset=utf8mb4;

varchar最大可以存储的字节数N为:
varchar中的N = (65535 - [数值类型所占字节数] - [日期类型所占字节数]) / byte - [char中的M]
其中byte为
charset = utf8mb4时 byte = 4
charset = utf8时 byte = 3
charset = gbk时 byte = 2
charset = latin时 byte = 1

你可能感兴趣的:(MySQL,mysql)