mysql int 括号_MySQL中的int(11)含义

今天在建MySQL表的时候突然想弄清楚

int(11)的含义。

为什么括号中的数字大多数情况都是11而不是其他数字。

int(11)的含义

0、先建一张表,顺便插入一些数值

create table `account`(

`id` int(3)

)engine = innodb default charset=utf8;

insert into `account`(`id`) values(12);

select * from `account`;

1、然后我们看看此时表的结构和表中数据

3fc9243d08727bb2695e06358ee7b78e.png

c8f48e554fe3027064b2e02458f5120e.png

2、将【Zerofill】勾选上,看看表中数据

0f71b19c5921ffb0f89677bcb1716369.png

图中的数据刚好展示了3位,和我们的int(3)中的3符合。

3、改变表中的int(n)中n的值,并保持zerofill勾选,看结果

alter table `account` change `id` `id` int(5) zerofill;

db4766b37569619cec89caad7b806e69.png

图中数据展示了5位,和int(n)中n的值的位数是一样的

4、如果现在插入超过int(n)中n位数的数据(比如说6位数)呢?数据会不会丢失?

insert into `account`(`id`) values(123456);

select * from `account`;

f59a26ce6e54870f7dbc62d97cf082d1.png

答案是:依然会展示插入的数据,不会丢失数据

5、如果插入超过int类型的上限的数呢?

我们知道MySQL中的int是占4个字节,每个字节8位,一共就是32位。

而且上面勾选了【Unsigned】,也就是无符号数,那么int的取值最大就可以取到

2^32 - 1 = 4294967295,我们把这个值插进去看看结果

insert into `account`(`id`) values(4294967295);

insert into `account`(`id`) values(4294967296);

7443690a9a200786d2e521eddb86b384.png

20f5353aae1c0c16d811d0cde4c05ae8.png

6、结论

通过以上几点,我们可以推断:

- int(n)中的n就是数据展示的位数(长度)。但是这样说不够精确:

1. 在没开启【zerofill】的情况下,不管是几位数,只要不超过int类型的上限,都直接显示数据。

2. 在开启【zerofill】的情况下,n的数值是展示的数据的位数的下限。位数不够n位数,则高位补0;位数够了也不会损失数据,直接显示插入的数据。

3. 超过int类型上限的数是无法插入数据库表中的。

为什么括号中的数字大多数情况都是11而不是其他数字?

因为int类型的数据上限是2^32 - 1 = 4294967295,这个数值刚好10位数,超过这个数值的数无法插入数据库表中,自然也就无法展示,所以选择超过10的n值就没有太大意义。

所以我们选择11位的展示长度肯定是够用了,(实际上写10就够用的),除此之外可能就是习惯了,但是具体的n取多少还是根据具体情况而定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值