• CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
    • char和varchar类型声明长度表示用户想保存的最大字符数,其中char(M)定义的列的长度为固定的,M的取值可以0-255之间,

      当保存char值时在它们的右边填充空格以达到指定的长度。
      || 当检索到char值时,尾部的空格被删除掉。
      || 在存储或检索过程中 不进行大小写转换。
      || char存储定长数据很方便,char字段上的索引效率很高

    • varchar(M)定义的列的长度是可变长度字符串,在MySQL5.0以上的版本中,varchar的数据类型长度支持到了65535,因为起始位和结束位占去了3个字节,所以其整体最大长度为65532字节。varchar值保存时只保存需要的字符数,另加一个字节来记录长度。

    • 同样在char和varchar尾部加空格,检索时char类型后的被删掉,而varchar类型的空格被保存。
    • 如果希望列中的数据值大小接近一致,请使用char;如果希望列中的数据值大小显著不同,请使用varchar。

    2,事实上,因为char类型通常要比varchar类型占用更多的空间,所以从减少空间占用量和减少磁盘i/o的角度,使用varchar类型反而更有利

    3,当数据的长度相差较大时,使用char会浪费很多的空间,而使用varchar可以节约大量的空间,对于数据量比较大的情况,更能体现出两者的差异。当数据长度比较固定(相差较小或固定不变)时,两者的差别就不太大。

    4,在查询时(作为查询条件),由于存储方式上的不同,导致char字段的查询速度要好于varchar字段,特别是对于在极大量的数据中查询