char与varchar都是用来存储字符型。但是他们还是有区别的。
一,长度的问题。
char类型的长度是固定,不会变。假如char(5)存储'abc'和'abcde'的长度都是5,区别在于存'abc'的时候,不够的长度会由空格补充到为5的长度。所以如果用char存储数据的时候,要确定我要储存的数据的长度是不变的。否则会出现'abc '不等于'abc'.
varchar类型的长度是会变的,但是只会变短,不会变长哦!列子;varchar(10)存储'abc'。可以看到字符的长度是三,但是实际存储到数据库的也是三的长度,不会像char类型会用空格填充。但是你如果用于储存长度大于10的数据是不行的哦,varchar只会变短不会变长。所以一般varchar类型用于储存长度会变的数据。
二,效率的问题。一般来说char类型的效率会快一点。