VARCHAR和CHAR数据类型的区别

VARCHAR型和CHAR型数据的这个差别是细微的,但是非常重要。他们都是用来储存字符数值小于255的字符,mysql5.0之前是varchar支持最大255。

假如你向一个长度为四十个字符的VARCHAR型字段中输入数据Bill Gates。当你以后从这个字段中取出此数据时,你取出的数据其长度为十个字符——字符串Bill Gates的长度。 假如你把字符串输入一个长度为四十个字符的CHAR型字段中,那么当你取出数据时,所取出的数据长度将是四十个字符。字符串的后面会被附加多余的空格。

当你建立自己的站点时,你会发现使用VARCHAR型字段要比CHAR型字段方便的多。使用VARCHAR型字段时,你不需要为剪掉你数据中多余的空格而操心。

VARCHAR型字段的另一个突出的好处是它可以比CHAR型字段占用更少的内存和硬盘空间。当你的数据库很大时,这种内存和磁盘空间的节省会变得非常重要.
虽然VARCHAR使用起来较为灵活,但是从整个系统的性能角度来说,CHAR数据类型的处理速度更快,有时甚至可以超出VARCHAR处理速度的50%。因此,用户在设计数据库时应当综合考虑各方面的因素,以求达到最佳的平衡

VARCHAR特点

1、使用比固定长度类型(char)占用更少存储空间(除了使用ROW_FORMAT=FIXED创建的MyISAM表)。
  2、使用额外的1-2字节来存储值长度,列长度<=255使用1字节保存,其它情况使用2字节保存。例如varchar(10)会占用11字节存储空间,varchar(500)会占用502字节存储空间。
  3、节约空间,所以性能会有帮助。在更新的时候会产生额外的工作。
  4、5.0以上版本,取值或设置值都会保存字符串末尾的空格,4.1之前的版本都会把字符串末尾的空格删除掉。
  5、最大长度远大于平均长度,很少发生更新的时候适合使用varchar,因为碎片更少了。
char特点

1、使用固定长度。
  2、保存的时候会去掉字符串末尾的空格。
  3、适合保存MD5后的哈希值或经常改变的值,因为固定的行不容易产生碎片。

你可能感兴趣的:(数据库学习)