MYSQL中char和varchar都是字符串类型,但是他们的存储和检索的方式不一样。
char 是定长的字符串,varchar是不定长的字符串。
char类型长度是(0-255)之间,在当某个字段被定义成char类,并指定长度,其长度就不再变化,当 CHAR 值被存储时,他们被用空格在右边填补到指定的长度。当 CHAR 值被检索时,填充的空格被删去。
varchar类型长度是(0-255)之间,与 CHAR 类型相反,VARCHAR 值只存储所需的字符,外加一个字节记录长度,值不被填补,当值被存储时,拖后的空格被删去。
如果你把一个超过列最大长度的值赋给一个 CHAR 或 VARCHAR 列,值被截断以 适合串类型。
例如,我们用下表来说明存储一系列不同的串值到 CHAR(4)和 VARCHAR(4)列的结果:
表 1-7 CHAR 类型和 VARCHAR 类型的对比
值
CHAR(4)
存储需求
VARCHAR(4)
扫描二维码关注公众号,回复: 1855789 查看本文章存储需求
''
'
4字节
''
1字节
'ab'
'ab
4字节
'ab'
3字节
'abcd'
'abcd'
4字节
'abcd'
5字节
'abcdefgh'
'abcd'
4字节
'abcd'
5字节
虽然实际存储的值并不一样,但是查询时,这两种类型是一致的,因为 CHAR(4)类型多于的空格将被忽略。
大多数情况下,同一表中CHAR 和VARCHAR只能使用其中之一,若包含两种类型,则MySQL 会将列从一种类型转换为另一种类型。
其原因如下:
1、 行定长的表比行可变长的表容易处理,效率更高。
2、 只有所有的类型是定长时,行才是定长的,才能提高性能。
3、 有时为了节省存储空间,使用了变长类型,在这种情况下最好也将定长列转换为可变长列。
MYSQL中字符串char与varchar的区别
猜你喜欢
转载自blog.csdn.net/weixin_42324471/article/details/80822098
今日推荐
周排行