CHAR与VARCHAR的定义:
- CHAR类型用于定义长字符串,并且必须在圆括号内用一个大小修饰符定义,修饰符的范围是0~255。比指定长度大的值将被截短,比指定长度小的值将会用空格昨填补。
- VARCHAR类型是CHAR的变体,是一种可变长字符串类型,必须带一个范围在0~65535的指示器。
CHAR与VARCHAR的区别:
-
它们之间的不同处在于MySQL数据库处理指示器的方式,CHAR把这个大小视为值的大小,在长度不足的时用空格补足。而VARCHAR类型把它是为最大值,并且只存储字符串实际需要的长度(增加一个额外字节来存储字符串本身的长度)来存储值,所以短于指示器长度的VARCHAR类型不会被空格填补,但长于指示器的值仍然会被截短。。。
-
VARCHAR类型可以根据实际内容动态改变存储值的长度,因此在不能确定字段需要多少字符时使用VARCHAR类型可以有效地节约磁盘空间、提高存储效率。
-
char的存储方式是,对英文字符(ASCII)占用1个字节,对一个汉字占用两个字节;而
varchar的存储方式是,对每个英文字符占用2个字节,汉字也占用2个字节,两者的存储数据都非unicode的字符数据。