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

  • Post author:
  • Post category:mysql


问题背景

今天搞了一个留言新功能,但是老总非要将留言文本长度放开到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练习生》



版权声明:本文为ybb_ymm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。