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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

问题背景

今天搞了一个留言新功能但是老总非要将留言文本长度放开到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个字节如果长度小于NMySql会变态的在他的右侧使用空格字符给补齐到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练习生》

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: mysql