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;

运行结果

表一行最多支持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

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值