首页 / MYSQL / MySQL中的int(11)含义
MySQL中的int(11)含义
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL中的int(11)含义,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1248字,纯文字阅读大概需要2分钟。
内容图文
今天在建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、然后我们看看此时表的结构和表中数据
2、将【Zerofill】勾选上,看看表中数据
图中的数据刚好展示了3位,和我们的int(3)中的3符合。
3、改变表中的int(n)中n的值,并保持zerofill勾选,看结果
alter table `account` change `id` `id` int(5) zerofill;
图中数据展示了5位,和int(n)中n的值的位数是一样的
4、如果现在插入超过int(n)中n位数的数据(比如说6位数)呢?数据会不会丢失?
insert into `account`(`id`) values(123456);
select * from `account`;
答案是:依然会展示插入的数据,不会丢失数据
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);
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取多少还是根据具体情况而定。
原文:https://www.cnblogs.com/xzhm/p/13816646.html
内容总结
以上是互联网集市为您收集整理的MySQL中的int(11)含义全部内容,希望文章能够帮你解决MySQL中的int(11)含义所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。