前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于MySQL中的char与varchar的区别

关于MySQL中的char与varchar的区别

作者头像
海拥
发布2021-08-23 15:27:43
2.3K0
发布2021-08-23 15:27:43
举报
文章被收录于专栏:全栈技术全栈技术

在MySQL中,varcharchar都是可以存储字符串的类型,并且,在设计数据表时,必须明确的指定长度!

varchar变长的,假设某字段设计为varchar(10),当存入的是"java"字符串时,实际存入4个字符,则实际占用也是4个字符的空间大小;

char定长的,假设某字段设计为char(10),当存入的是"java"字符串时,将要存入的4个字符比设计的varchar(10)中指定的数量要少,则会补充6个空格,以达到10个字符,则实际占用也是10个字符的空间大小;

所以,如果要存入的字符串的长度不固定,应该使用varchar类型,只有长度固定的情况下才使用char

在MySQL处理varchar类型时,默认情况下,还会使用额外的1个字节记录“实际存入的字符数量”,也就是说,将"java"存入到varchar(10)的字段中,MySQL还会使用额外的1个字节空间记下4这个数量值,后续,当读取这个值时,MySQL会先读取这个4,然后再开始获取字段中的数据;而char类型就不存在这个问题,因为使用char类型存储的字符串的长度一定是固定的(即使不固定,也会添加空格,使得该字段的所有字符串的长度都与字段的设计值保持一致)。

当然,在处理varchar类型时,由于默认情况下只使用1个字节记录“实际存入的字符数量”,所以,在这种情况下能够存入的字符数量最多是255个(1个字节能表示的最大正数),当需要存入更多数据时,MySQL会自动扩容,使用2个字节记录“实际存入的字符数量”,能够表示的最大正数就是65535,并且,不会再扩容,所以,使用varchar最多存储65535个字符!

所以,综合来看,其实varchar类型的数据将占用更多的存储空间(需要使用额外的字节作记录),同时,查询效率偏低,所以,虽然使用char能够存储的数据换成使用varchar也都能正常存储和使用,但是,在能够使用char的应用场景,应该优先使用char

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/07/03 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档