- CHAR是一种固定长度的类型,而VARCHAR则是一种可变长度的类型。
- 在CHAR(M)类型的数据列内,每个值要占M个字节,若小于M,则MySQL会在它的右边用空格来补足,但在查询时,这些空格会被去掉。
- 在VARCHAR(M)类型的数据列里,除了存放数据所占用字节,还会再占用一个字节来记录其内容长度(L+1个字节),多余空格将会在以后插入操作的过程中被去掉。
- 采用CHAR会多占用空间,造成空间的浪费。
如果定义了CHAR(100),最多可存放100个“a”或100个汉字,如实际存放一个“a”或一个汉字“我”,那么此列实际占用空间还是100,多出去的99个长补空格,浪费空间。
如果采用VARCHAR,则节省空间。我们还用上边的例子,把CHAR(100)改为varCHAR(100),情况完全不一样了,如实际存放一个“a”或一个汉字“我”,那么此列实际占用空间就是1个。
当实际值的长度超出定义的长度时,二者均不允许,则会报错。
总结
- varchar比char省空间