编辑后,我对之前的答案做出了错误的假设。我将向您粘贴http://dev.mysql.com/doc/refman/5.0/en/char.html的摘录(已添加重点)
CHAR 和 VARCHAR 类型相似,但它们的存储和检索方式不同。从 MySQL 5.0.3 开始,它们在最大长度和是否保留尾随空格方面也有所不同。
CHAR 和 VARCHAR 类型的声明长度表示要存储的最大字符数。例如,CHAR(30) 最多可容纳 30 个字符。
CHAR 列的长度固定为您在创建表时声明的长度。长度可以是 0 到 255 之间的任何值。存储 CHAR 值时,它们会用空格右填充到指定长度。检索 CHAR 值时,将删除尾随空格。
VARCHAR 列中的值是可变长度字符串。在 MySQL 5.0.3 之前,长度可以指定为 0 到 255 之间的值,在 5.0.3 和更高版本中可以指定为 0 到 65,535 之间的值。MySQL 5.0.3 及更高版本中 VARCHAR 的有效最大长度取决于最大行大小(65,535 字节,在所有列之间共享)和使用的字符集。
与 CHAR 相比,VARCHAR 值存储为一个字节或两个字节长度的前缀加上数据。长度前缀表示值中的字节数。如果值需要不超过 255 个字节,则一列使用一个长度字节,如果值可能需要超过 255 个字节,则使用两个长度字节。