CHAR和VARCHAR类型相似,但在存储和检索方式上有所不同。它们在最大长度和是否保留尾随空格方面也有所不同。
CHAR和VARCHAR类型的声明长度表示希望存储的最大字符数。例如,CHAR(30)最多可以容纳30个字符。
下表通过显示将各种字符串值存储到CHAR(4)和VARCHAR(4)列的结果来说明CHAR和VARCHAR之间的区别(假设该列使用的是诸如latin1之类的单字节字符集)。
'' | ' ' | 4 bytes | '' | 1 byte |
'ab' | 'ab ' | 4 bytes | 'ab' | 3 bytes |
'abcd' | 'abcd' | 4 bytes | 'abcd' | 5 bytes |
'abcdefgh' | 'abcd' | 4 bytes | 'abcd' | 5 bytes |
https://dev.mysql.com/doc/refman/8.0/en/char.html