解惑MySQL:对int(1)与int(10)的认知误区
困惑
最近遇到个问题,解惑有个表的知误要加个user_id字段,user_id字段可能很大,解惑于是知误我提mysql工单alter table xxx ADD user_id int(1),领导看到我的解惑sql工单说:这int(1)怕是不够用吧,接下来是知误一通解释。
其实这不是解惑我第一次遇到这样的问题了,其中不乏有工作5年以上的知误老司机。包括我经常也看到同事一直使用int(10),解惑感觉用了int(1),知误字段的解惑上限就被限制,真实情况肯定不是知误这样。
数据说话
我们知道在mysql中int占4个字节,解惑那么对于无符号的知误int,b2b供应网最大值是解惑2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?
复制CREATE TABLE `user` ( `id` int(1) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;1.2.3.4.id字段为无符号的int(1),我来插入一个最大值看看。
复制mysql> INSERT INTO `user` (`id`) VALUES (4294967295); Query OK, 1 row affected (0.00 sec)1.2.可以看到成功了,说明int后面的数字,不影响int本身支持的大小,int(1)、int(2)...int(10)没什么区别。
零填充
一般int后面的数字,配合zerofill一起使用才有效。先看个例子:
复制CREATE TABLE `user` ( `id` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;1.2.3.4.注意int(4)后面加了个zerofill,我们先来插入4条数据:
复制mysql> INSERT INTO `user` (`id`) VALUES (1),(10),(100),(1000); Query OK, 4 rows affected (0.00 sec) Records: 4 Duplicates: 0 Warnings: 01.2.3.然后我们来查询下:
复制mysql> select * from user; +------+ | id | +------+ | 0001 | | 0010 | | 0100 | | 1000 | +------+ 4 rows in set (0.00 sec)1.2.3.4.5.6.7.8.9.10.通过数据可以发现 int(4) + zerofill实现了不足4位补0的现象,单int(4)是没有用的。而且对于0001这种,服务器托管底层存储的还是1,只是在展示的会补0。
总结
int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。
图片
相关文章
先锋DVD-232D(探索先锋DVD-232D的先进功能和高品质音视频体验)
摘要:先锋DVD-232D是一款备受赞誉的DVD播放器,具备先进的技术和卓越的音视频表现。它不仅支持各种常见的视频格式,还配备了多种连接接口和改进的图像处理能力,为用户带来身临其境的视听...2025-11-05
想了解更多内容,请访问:和华为官方合作共建的鸿蒙技术社区https://harmonyos.51cto.com/#zz大家一起学鸿蒙OS(HarmonyOS)设备开发 笔记 by javaaier资源2025-11-05
一、什么是Vue.js?Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目2025-11-05
「平淡无奇小天才」:两块C++代码结合ASCII码,即可实现Nvidia光线追踪技术
近期,有国外大神利用ASCII码,完成了Nvidia显卡才能实现的光线追踪技术,并实现了不错的光影效果。下面是光线追踪的效果示意:该项目一经过发出,在Reddit上的热度就达到了2.1K,演示视频在Y2025-11-05- 摘要:随着时间的推移,我们的笔记本电脑可能会变得越来越慢,出现各种问题。这时候,重装系统是一个解决办法。本文将为您介绍如何使用戴睿笔记本电脑重装系统,让您的电脑焕然一新。文章目录...2025-11-05
本文整理自快手数据平台部,数据服务化中台负责人倪顺发表的《快手数据中台建设-大数据服务化之路》的演讲。图片来自 Pexels他围绕数据资产服务化,服务于业务产生商业价值进行了分享:第一部分是背景介绍,2025-11-05

最新评论