MYSQL中char和varchar的区别

2019-04-06  本文已影响0人  慕辙

在mysql数据库中,char和varchar都是常用的字符型数据类型。但是不论是结构还是数据的保存上看,两者还是有很大的差别。在不同的场景中也各有优劣。我们一起看一下char和varchar:

相同点:

  1. char(n),varchar(n)中的n都代表字符的个数。
  2. 超过char,varchar最大长度n的限制后,字符串会被截断。

不同点:

  1. char不论实际存储的字符数都会占用n个字符的空间,而varchar只会占用实际字符应该占用的字节空间加1(实际长度length,0<=length<255)或加2(length>255)。因为varchar保存数据时除了要保存字符串之外还会加一个字节来记录长度(如果列声明长度大于255则使用两个字节来保存长度)。
  2. 能存储的最大空间限制不一样:char的存储上限为255(2^8-1)字节,varchar的存储上限是65535(2^16-1)字节。
  3. char在存储时会截断尾部的空格,而varchar不会。

根据char和varchar结构和数据保存上的不同点,我们比较一下两者的适用场景:

  1. 根据要存储的字符串长度来看: 长度相近且不需要很大存储空间的字符串可以选用char,节省存储空间。
  2. 从碎片的角度来看:用变长的字符串数据类型,需要时不时对碎片进行处理。
  3. 即使使用varchar的数据类型也不要盲目设置过大的存储限制,比如你只需要存储80个字符,VARCHAR(100)和VARCHAR(500)虽然都存储了同样长度的字符,但是内存消耗是不一样的。
上一篇下一篇

猜你喜欢

热点阅读