mysql中的varchar(10)和int(11)是什么意思

在这里插入图片描述

1 问题背景

数据库建表的时候经常遇到这个varchar,对这个知识点很疑惑。

2 前言

2021年8月22日重写本博客,原因是有读者评论“不懂别乱说”或者评论给出指正,笔者虚心接受并决定重写本博客。其实不必纠结于varchar(10)到底是什么意思,如果数据存储空间不足够导致插入数据失败,尽管加大存储空间就好了,比如varchat(64)。欢迎广大读者评论指出不正确的地方。本博客参考于InnoDB引擎的底层原理的博客MySQL的varchar水真的太深了——InnoDB记录存储结构。笔者只花了几分钟的时间略看了一下自己关注的地方,有兴趣的小伙伴可以点击链接阅读。

本篇博客解释varchar的意思是基于MySQL5.7及以后的版本。

3 varchar(10)是什么意思

varchar(10)的意思是可以存储的最大字符串长度为10个字符,并且字符是变长的,如果不满10个就根据实际存储的字节来确定,即存储空间为0~10个字符。注意,不同编码方式1个英文字母占的字节是不同的,如下所示:

  • ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

  • UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占三个字节,英文标点占一个字节

  • Unicode编码:一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占两个字节,英文标点占两个字节

4 int(11)是什么意思

MySQL中的int型存储空间为4个字节。不论是int(10)还是int(11)等等,int型数据占4个字节存储空间。int(11)的意思是int型数据的显示宽度为11位,比如存储的是整型数值6,其二进制存储表示为110,那么如果用int(11)存储这个6,其二进制110前面还会有若干个二进制位直到总共二进制位数为达到了11。这个可以配合字段的填充0功能来解释。如下所示:

以下展示填充0的功能在navicat是无效果的,看不出有填充0:

建立一张表,如下:

在这里插入图片描述

插入若干条记录,如下:

在这里插入图片描述

如上所示,navicat是看不出填充0的效果的。得用原生的mysql客户端查看,如下所示:

在这里插入图片描述
可以看到,如果字段值的宽度不足11,并且如果开启了填充0的功能,那么可以看到字段值是会自动填充0直到达到int(11)括号中的数字的值。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值