varchar和char有什么区别?

1.固定长度和不固定长度
char 定长的字符串,char(10) 当输入小于10个字符的时候,char会补空值 长度固定,读取速度快一些,方便查找空间换时间 最多255
varchar(50) 不是定长,可变的字符串,只会在数据库占用50的字符长度
时间换空间
2.存储方式
varchar会使用1个或2个额外字节记录字符串的长度
长度标识字节数<255 1字节
长度标识字节数<255 2字节
char 定长没有碎片 不需要额外的字节存储
3.存储容量
char 最多字符个数255 和字符集无关
varchar行存储最大字节数65535字节(2^16-1) 单列字段最大65532 和字符集相关
最大长度=行存储最大节数(65535)-null标识字节数(1)-长度标识字节数
null标识字节允许空时占一个字节
gbk 英文1 中文2
utf8 英文1 中文3
utf8mb4 英文1 中文3 emoj图片4

char(10) varchar(10)开始存的字节,后面存的字符 mysql升级
char会默认自动的截断末尾的空格需要注意

如何选择使用?

一般长度固定,或者字符比较短小,名称,班级姓名,学号等用char
一般比较大的文本信息就使用varchar提升性能