【MySQL】常用字符类型长度和使用

MySQL中字符类型有很多个,用的最多的是char和varchar类型。他们的对比如下图:

【MySQL】常用字符类型长度和使用_第1张图片

utf8中一个字符占用3字节,gbk占用2个字节,latin1占用1个字节。

char(x)保存的字符长度固定为x(x最大取值255),不足的会在右侧用空格填充(仅储存,查询出来没有空格),而超过x长度的部分会截取掉。所以表格中占用字节都是9。

varchar(x)保存的字符长度最大为x(x最大取值65535),不足的直接储存实际字符,超过x长度的也会被截取。由于使用额外的1字节储存字符长度,所以表格中是实际长度*3+1个字节。

1.char和varchar的最大长度会根据字符编码不同而变化,影响因素有3个:

  • 1.字符编码。如utf8编码中,一个字符占用3字节,最大长度为21845。
  • 2.储存长度。varchar要占用1到2个字节储存字符本身的长度,长度小于等于255用1个,超过用2个。
  • 3.单行最大长度限制。一张表中所有字段设置的长度之和不能超过65535,如果表中两个varchar,一个长度为65530,另一个为6,建表就会报错。储存更长的可以用text和blob类型。

2.选择合适的类型使用

  • 使用char:固定长度的字符串,如MD5加密后的字符串,时间戳,证件号码,或者一些很短的字符串。
  • 使用varchar:列数据长短不一致,数据更新频率低(长度变化会有一些额外的操作)。
  • 使用varchar的时候,长度也要注意合适,不然会造成内存空间浪费。

你可能感兴趣的:(MySQL,mysql,数据库)