1.varchar 表示变长,char 表示长度固定。当所插入的字符超过他们的长度时,在严格模式下,会拒绝插入并提示错误信息,在一般模式下,会截取后插入。如 char (5),无论插入的字符长度是多少,长度都是 5,插入字符长度小于 5,则用空格补充。对于 varchar (5),如果插入的字符长度小于 5,则存储的字符长度就是插入字符的长度,不会填充。
2. 存储容量不同,对于 char 来说,最多能存放的字符个数为 255。对于 varchar,最多能存放的字符个数是 65532。
3. 存储速度不同,char 长度固定,存储速度会比 varchar 快一些,但在空间上会占用额外的空间,属于一种空间换时间的策略。而 varchar 空间利用率会高些,但存储速度慢,属于一种时间换空间的策略。