MySql中的varchar的最大长度到底是多长?

问题背景

今天搞了一个留言新功能,但是老总非要将留言文本长度放开到500的长度,我有些犯难了,到底是用text还是varchar,毕竟之前的使用mysql也没有具体查看varchar的具体长度。

varchar的存储规则

4.0 版本以下:varchar(10)代表的是10个字节,如果我们存放汉字(UTF8)时候,则只能存放3个汉字(每个汉字占用3个字节)

5.0 版本以上:varchar(10)代表的是20个字符,无论存放数字、字母还是汉字(UTF8)(每个汉字占用3个字节),都可以存放10个

varchar和char的区别

char是一种固定长度的类型。(不可变),varchar则是一种可变长度的类型。

举例:

char(N)类型的数据列里,每个值都占用的是N个字节,如果长度小于N,MySql会变态的在他的右侧使用空格字符给补齐到N(当我们在进行检索的时候,那些补齐的空格会给我门自动去掉)

varchar(N)类型的数据列中,每个值只会占用当前数据所占用的字节,再加上一个用来记录他的长度的字节(所以他的总长度是实际长度+1个字节)

MySql行长度

MySql要求我们定一个行的长度不能超过65535个字节(其中不包含text、blob等大字段类型)varchar长度收到了这条长度的限制,和其他非大字段加起来不能超过65535个字节。如果超过了这个长度则会报错的。

varchar最大长度到底是多少?

根据字符集格式不同,会是不同的答案:

字符类型若是GBK,每个字符占用2个字节,最大长度不能超过32766

字符类型是UTF8,每个字符最多占用3个字节,最大长度不能超过21845,当超过了这个长度的时候,mysql会自动将varchar类型转为longtext或者mediumtext

好了,今天关于mysql的varchar就讲解到这里,欢迎大家留言交流,也欢迎大家关注我的工种昊《coder练习生》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ybb_ymm

你的鼓励会是对我最大的支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值