本文介绍了“MySQL varchar类型的最大值是多少”的知识。很多人在实际案例操作中都会遇到这样的困难。接下来,让边肖带领大家学习如何应对这些情况!希望大家认真阅读,学点东西!
问题:MySQL 数据库的varchar字段类型最大存储长度到底是多少?
问题分析
以所有官方文件为准,官方描述如下:
在MySQL 4.1中,长度总是1字节。在MySQL 5.0中,长度可以是1字节(最多255个)或2字节(256到65535个)。
它可能意味着:
在MySQL 4.1之前,长度总是1字节(varchar(20),这意味着20字节)
在MySQL 5.0之后,长度可以是1字节(最多255字节)或2字节(256到65535)
根据官网显示,最大值为65535字节。在utf8mb4编码下,每个字符占用4个字节,最大值应为16,383.75。
6535/4=16383.75
实践验证
似乎在这里得出了一个结论,但事实真的是这样吗?
让我们做个实验,好吗?
Mysql版本:select version();//5.7
1、若一个表只有一个varchar类型
定义如下:
createtable ` t1 `(` c ` varchar(N)DEFAULTNULL)ENgine=innoddefaultcharset=utf8 MB 4;表t1中“c”字段的最大长度n是多少?
(6553512)/4=16383备注:
减去1的原因是实际行存储从第二个字节开始;
减去2的原因是varchar头的2个字节代表长度;
除以4的原因是字符编码是utf8mb4。
00-1010定义如下:
create table ` T2 `(` C1 ` int(10)DEFAULT NULL,` c2`char(32)DEFAULTNULL,` C3 ` varchar(N)DEFAULT NULL)ENGINE=innodDEFAULT charset=utf8 MB 4;表t2中“c”字段的最大长度n是多少?
(6553512432 * 4)/4=16350备注:
减去1和2的原因同上;
减去4的原因是int类型占用了4个字节;
减去32*4的原因是utf8mb4编码的字符类型占用4个字节(长度32)
我们来验证一下是否如上面推理计算中所说:
00-1010 alter table`t2 `修改列` c3` varchar (16350)已成功执行。
2)将t2表中c3字段的长度修改为16351
alter table ` T2 ` modify column ` C3 ` varchar(16351);执行失败,出现以下错误消息:
行太大。不计算BLOBs,所用表类型的最大行大小为65535。这包括存储开销,请查看手册。您必须将一些列更改为文本或博客。
“MySQL varchar类型的最大值是多少”到此结束。感谢阅读。如果你想了解更多的行业,可以关注网站。边肖将为您输出更多高质量的实用文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133546.html