varchar类型用于存储可变长字符串

1.需要使用1或2个额外字节记录字符串的长度。如果列的最大长度小于小于或者等于255字节,则只使用1个字节表示,否则使用2两个字节。

2.节省了存储空间,所以对性能有帮助。

3.5.0以上版本,mysql存储和检索时会保留末尾的空格,4.1之前的版本都会把末尾的空格剔除。

4.字符串列的最大长度比平均长度大很多,列的更新少,所以碎片不是问题。使用了像utf-8这样复杂的字符集,每个字符都使用不同的字节数进行存储。

char 类型是定长的,适合存储很短的字符串,或者所有值都接近同一个长度。

char非常适合存储密码的md5值,因为这是一个定长的。对于经常变更的数据,char也比varchar更好,因为定长的char类型不容易产生碎片,保存的时候去掉字符串末尾的空格。