VARCHAR 是可变长度的。
CHAR 是固定长度。
如果您的内容是固定大小的,那么您将获得更好性能的CHAR
有关详细解释,请参阅CHAR和VARCHAR类型的MySQL页面(请务必阅读注释)。
CHAR
1.用于存储固定长度的字符串值。
2.最大数量 数据类型可容纳的字符数为255个字符。
3.它比varchar**快50%**。
4.使用静态内容分配
VARCHAR
1.用于存储可变长度的字母数字数据。
2.这种数据类型最多可以容纳的最大值
3.Pre-MySQL 5.0.3:255个字符。
4.在MySQL 5.0.3+中:该行共享65,535个字符。
5.它比CHAR 慢。
6.使用动态内存分配。
CHAR数据类型是固定长度数据类型。例如,如果声明CHAR(10)数据类型的变量/列,则无论您在此变量或列中是存储1个字符还是10个字符,它总是需要10个字节。在这个例子中,因为我们已经声明了这个变量/列,所以我们可以在这个列中存储最多10个字符。CHAR(10)
VARCHAR 是一个可变长度的数据类型。例如,如果声明VARCHAR(10)数据类型的变量/列,则它将使字节数等于存储在此列中的字符数。所以,在这个变量/列中,如果你只存储一个字符,那么它将只需要一个字节,如果我们存储10个字符,那么它将占用10个字节。在这个例子中,我们已经声明这个变量/列为VARCHAR(10),所以我们可以在这个列中存储最多10个字符。
来自:https://www.quora.com/What-is-the-difference-between-a-char-and-a-varchar-in-my-SQL