MySQL中CHAR和VARCHAR类型的区别
CHAR类型
CHAR(n)表示长度固定的字符串,n表示字符数量,最大255。
如果存储的内容小于n个字符,将会使用空格进行填充,查询时自动截断尾部空格。
VARCHAR类型
VARCHAR(n)表示长度可变的字符串,n表示允许的最大字符数量。
n = (行存储最大字节数 - NULL标识列占用字节数 - 长度标识字节数)/ 字符集单字符最大字节数
- MySQL默认行最大字节数为65535,所有字段共享。
- 每个可空字段NULL标识列占用1比特,8个比特一组。
- 如果字段最大长度小于等于255字节,则只使用1个字节标识,否则使用2个字节。
CHAR与VARCHAR选择
CHAR类型频繁更新时性能更好。通常来说,只有存储固定长度的数据时才会使用。例如身份证,邮政编码,MD5值等。
VARCHAR类型节省存储空间,一般用于存储长度不固定的内容,例如名字、电子邮箱、产品描述等。