区别1):定长与变长
char表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于自定义长度时候,中间用空格填充;varChar小于定义长度时,还是按照实际长度存储,插入多长就存多长。
因为长度是固定的,char的存取速度要比varchar快,方便程序的存储与查找;但是char也为此付出了空间的代价,因为长度是固定的,所以会占据多余的空间,可谓是以空间换取时间效率,varchar则正相反,以时间的代价换取空间。
区别2):存储的容量不同
char最多存放的字符个数是255个,与编码无关
varchar最多存放的字符个数是65532个。varchar的最大有效长度由最大行大小和使用的字符集确定,整体最大长度为65532个。