char 和 varchar 有什么区别

本文探讨了char和varchar在数据库中的使用,char为定长类型,节省空间但可能丢失空格,适用于固定长度数据;varchar为可变长度,兼容性强但可能导致内存碎片和页分裂,适用于变长字符串。
摘要由CSDN通过智能技术生成

char和varchar都是用于在数据库中存储字符串的数据类型。它们之间的主要区别在于存储空间的使用方式:

char是一种定长的数据类型,它的长度固定且在存储时会自动在结尾添加空格来将字符串填满指定的长度。char的长度范围是0-255,

varchar是一种可变长度的数据类型,它只会存储实际的字符串内容,不会填充空格。因此,在存储短字符串时,varchar可以节省空间。varchar的长度范围是0-65535(MySQL 5.0.3之后的版本)。

对于字段值经常改变的数据类型来说,CHAR 相比 VARCHAR 也更有优势,因为 CHAR 的长度固定,不会产生碎片。

如果使用char(100),则插入记录后就分配了100个字节,后续修改不会造成页分裂的问题,而varchar(100)由于没有提前分配存储空间,因为表中数据刚开始插入时,可变长度字段值都是根据实际长度存储下来的,且行与行之间数据也是紧密连续存放在文件地址中的。那么现在值变长了,原来的位置无法扩展出新的空间出来,所以无法覆盖存放到原来的位置上。此时MySQL就会使用页分裂的方法扩展字段变长的空间。

varchar的优点是变长的字符串类型,兼容性更好;但是同时也会带来一些问题,如使用varchar可能会产生内存碎片、varchar会额外需要1到2个字节存储长度信息、以及update语句可能会导致页分裂等。

例如,存储产品描述(可变长度)、存储用户地址(可变长度)、存储用户名称(可变长度),这些都适合用varchar。

char的优点是定长的字符串类型,减少内存碎片,并且无需额外的磁盘空间去存储长度信息。但是他的缺点是会删除列末尾的空格信息

例如,存储身份证号(固定长度)、存储订单号(固定长度)、存储国家编码(固定长度),这些都适合用char。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值