VARCHAR和CHAR应该说是MySQL最常用的字符串。但不幸的是,很难精确的解释这些值是怎么存储在磁盘
和内存中的,因为这些与存储引擎有关。
VARCHAR 是可以存储变长字符串。比如 varchar(32) ,可以存储 16个字符,也可一下存储32个字符(这里
的可变长度是在32个字符串以内,他是不能存储64个字符的)。
CHAR类型是定长的。比如CHAR(32),如果我们存储16个字符长的字符串,那么数据库会自动的填充16个空格
这里,在取出时就是32位的字符串。
对于VARCHAR和CHAR在存储字节来看的话都差不多,除了本身存储位数以外,都会有多余字节指定长度,所以
VARCHAR与CHAR越来越接近。所以很多人就在创建表的时候全部使用VARCHAR来定义字符串。
CHAR不是越来越失去存在意义了吗?当然不是,CHAR还是有优点的。
1、CHAR很适合存储很短的字符串,如CHAR(1) 来存储只有Y和N的值。
2、CHAR合适定长,这里是定长存储密码的MD5值,。
3、CHAR存储经常变化的定长数据。因为定长CHAR在改变时不容易产生碎片。比如密码的MD5,定长而且容易变化。
所以在创建数据库表时,CHAR还是有自己的特色。当然VARCHAR也会不断的修改和优化,VARCHAR也可以完成CHAR
的所以事情。如果使用不同的的类型数据,看起来有点高大上的感觉!别无其他目的。
该贴被tngou编辑于2014-5-5 14:02:54该贴由hui.chen转至本版2014-11-5 16:11:51