mysql中char与varchar的区别分析

在mysql教程中char与varchar的区别呢,都是用来存储字符串的,只是他们的保存方式不一样罢了,char有固定的长度,而varchar属于可变长的字符类型。

char与varchar的区别 

char (13)长度固定, 如'www.jb51.net' 存储需要空间 12个字符 

varchar(13) 可变长 如'www.jb51.net' 需要存储空间 13字符, 

从上面可以看得出来char 长度是固定的,不管你存储的数据是多少他都会都固定的长度。而varchar则处可变长度但他要在总长度上加1字符,这个用来存储位置。所以实际应用中用户可以根据自己的数据类型来做。 

再看看char,与varchar在速度上的区别吧。 

mysal>create tabe ab(v varchar(4),c char(4)); 
query ok ,0 rows affected(0.02 sec) 
mysql>insert into abc values('ab ','ab ') 
query ok ,1 row affected(0.00 sec); 
mysql->select concat(v ,'+') ,concat(c ,'+') form abc 
ab + | ab+ 
1rows in set (0.00 sec) 

从上面可以看出来,由于某种原因char 固定长度,所以在处理速度上要比varchar快速很多,但是对费存储空间,所以对存储不大,但在速度上有要求的可以使用char类型,反之可以用varchar类型来实例。 

注明: 

在用char字符类型时内容后面有空间时必须作相关处理,要不就会把空格自动删除。 

建意: 

myisam 存储引擎 建议使用固定长度,数据列代替可变长度的数据列。 
memory存储引擎 目前都使用固定数据行存储,因此无论使用char varchar列都没关系, 
innodb 存储引擎 建意使用varchar 类型