MySQL 中 CHAR 和 VARCHAR 的区别

CHARVARCHAR 都是字符串类型,它们的具体区别为:

长度大小区别:

  • CHAR(M) 定义的列的长度为固定的,M 取值可以为 0~255 之间
  • VARCHAR(M) 定义的列的长度为可变长,M 取值可以为 0~65535 之间,( VARCHAR 的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是65,532字节)

存数据时的区别:

  • CHAR 值存储时,如果字符数没有达到定义的位数,会在后面用空格补全,再存入数据库中。比如定义 CHAR(10),那么不论存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充
  • VARCHAR 值保存时只保存需要的字符数,另加一个字节来记录长度(如果列声明的长度超过255,则使用两个字节)。VARCHAR 值保存时不进行填充

取数据时的区别:

  • 数据库取 CHAR 值时,尾部的空格会被删除
  • 数据库取 VARCHAR 值时,尾部的空格仍然保留

总结

  • CHAR 定长,一般用于固定长度的表单提交数据存储 ;例如:身份证号,手机号,电话,密码等;而 VARCHAR 不定长
  • 从空间上考虑,VARCHAR 更好,从效率上考虑,CHAR 更好。这其中的选择就需要我们根据情况自己考量

评论

还没有任何评论,你来说两句吧!