char是一种固定长度的类型,varchar则是一种可变长度的类型,它们的区别是:
char(M)类型的数据列中,每个值都占用M个字节,如果某个长度小于M,mysql就会在它的右边用空格字符补足,(在检索操作中那些填补出来的空格字符将被去掉)。
在varchar(M)类型的数据列里面,每个值只占用刚好够用的字节,当 M <= 255 的时候是用一个字节即可记录其长度(即总长度为L+1字节),当 M>255 的时候则需要2个字节(即总长度为L +2字节)
如果某个数据行的长度是可变的,那么为了节约存储空间,mysql会把这个数据表里的是固定长度类型的数据转换为相应的可变长度类型。(也就是为了节约资源,采用varchar())