MySQL中varchar与char的区别以及varchar(50)中的50代表的涵义?

本文详细介绍了数据库中char和varchar类型的差异,包括存储方式、性能及空间占用。char为定长,适合存储长度固定的字段,虽占用空间多但读取速度快;varchar则变长,节省空间但读取稍慢。此外,讨论了varchar的长度限制以及varchar(50)的实际含义。同时,解释了int(20)中的20仅影响显示,不影响存储。这些设计旨在平衡时间和空间效率,适应不同场景需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


 
(1)、varchar与char的区别区别一,定长和变长
    char 表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。    因为其长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar则刚好相反,以时间换空间。区别之二,存储的容量不同
    对 char 来说,最多能存放的字符个数 255,和编码无关。而 varchar 呢,最多能存放 65532 个字符。varchar的最大有效长度由最大行大小和使用的字符集确定。整体最大长度是 65,532字节。(2)、varchar(50)中50的涵义    最多存放50个字符,varchar(50)和(200)存储hello所占空间一样,但后者在排序时会消耗更多内存,因为order by col采用fixed_length计算col长度(memory引擎也一样)。在早期 MySQL 版本中, 50 代表字节数,现在代表字符数。(3)、int(20)中20的涵义    指显示字符的长度,不影响内部存储,只是影响带 zerofill 定义的 int 时,前面补多少个 0,易于报表展示。(4)、mysql为什么这么设计    对大多数应用没有意义,只是规定一些工具用来显示字符的个数;int(1)和int(20)存储和计算均一样。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值