mysql数据类型char与varchar的区别

问题

char(64)和varchar(64)各指的什么?

char和varchar有什么不同?

环境

mysql 5.7+

解决

char(64), varchar(64)
64都是指的字符数量, 而不是字节数


char(m)是定长基于字符数量的限制, 不管字符集是utf8还是gbk还是其它, 最多只能存储255个字符, 即最大char(255)
占用空间根据m指定的长度字符计算, 如果实际使用字符没达到m那么会在最右边填占位符, char检索效率比varchar高
占用空间=m × 一个字符占用空间大小(utf8三个字节, gbk两个字节)

varchar(m)是不定长基于存储空间的限制, 其最大能存储65535字节的数据, 即是根据存储空间决定你能存多少字符
受存储空间限制, 当设置字符集为utf8时最多能存储21845个字符即最大varchar(21845), 当设置字符集为gbk时最多能存储32767个字符即最大varchar(32767)
占用空间是实际存了多少字符算多少空间
占用空间=实际字符数 × 一个字符占用空间大小(utf8三个字节, gbk两个字节)


图1 varchar设置字符集为utf8时的最大字符限制为21845

图2 varchar设置字符集为gbk时的最大字符限制为32767

posted @ 2020-07-14 11:03  FuKai  阅读(472)  评论(0编辑  收藏  举报