参见 https://dev.mysql.com/doc/refman/5.6/en/char.html
以上是针对MySQL 5.6版本,不保证之前的版本也有同样的行为。
总结一下:
建表时定义的CHAR(n)和VARCHAR(n)是指定该字段能储存的最大字符(而不是字节)。既然是字符,当然不同字符集会占用不同的存储空间,如果是字符集是latin1,1个字符对应1个字节,如果字符集是utf8,则一个字符对应3个字节,以此类推。
CHAR类型的字段可指定长度为0-255。
VARCHAR类型的字段可指定长度为0-65535。
整个表的CHAR/VARCHAR字段长度之和不能超过65535字节。