int(1) 和 int(10) 的区别?很多老程序都理解错了!
欢迎关注方志朋的博客,回复”666“获面试宝典
最近开发遇到一个问题,涉及到了int(1) 和 int(10) 有什么区别?三年老开发也不知道,于是自己上网 google 研究了下。
把区别和大家分享下。
困惑
最近遇到个问题,有个表的要加个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,最大值是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;
id字段为无符号的int(1),我来插入一个最大值看看。
mysql> INSERT INTO `user` (`id`) VALUES (4294967295);
Query OK, 1 row affected (0.00 sec)
可以看到成功了,说明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;
注意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: 0
分别插入1、10、100、1000 4条数据,然后我们来查询下:
mysql> select * from user;
+------+
| id |
+------+
| 0001 |
| 0010 |
| 0100 |
| 1000 |
+------+
4 rows in set (0.00 sec)
通过数据可以发现 int(4) + zerofill实现了不足4位补0的现象,单单int(4)是没有用的。
而且对于0001这种,底层存储的还是1,只是在展示的会补0。
总结
int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。
zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,如果mysql没有零填充的功能,但是你又要格式化输出等长的数字编号时,那么你只能自己处理了。
作者:假装懂编程
原文:juejin.cn/post/6992574502282477605
热门内容:
MySQL + JSON = 王炸!!
JetBrains 宣布:IntelliJ 平台彻底停用 Log4j 组件,建议切换至 java.util.logging
面试官:private修饰的方法可以通过反射访问,那么private的意义是什么?
最新 955 不加班的公司名单(2022版)
SpringCloud 微服务架构,适合接私活(附源码)
最近面试BAT,整理一份面试资料《Java面试BAT通关手册》,覆盖了Java核心技术、JVM、Java并发、SSM、微服务、数据库、数据结构等等。
获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。
明天见(。・ω・。)ノ♡
int(1) 和 int(10) 的区别?很多老程序都理解错了!相关推荐
- zend optimizer php5.5,PHP_PHP5.3以上版本安装ZendOptimizer扩展,现在很多PHP程序都需要ZendOptimi - phpStudy...
PHP5.3以上版本安装ZendOptimizer扩展 现在很多PHP程序都需要ZendOptimizer环境,但是ZendOptimizer在PHP5.2之后已经被支持,那怎么办,Zend也不会这么 ...
- int(1) 和 int(10) 有什么区别?资深开发竟然都理解错了!
文章来源:https://sourl.cn/ZVQP6t 困 惑 最近遇到个问题,有个表的要加个user_id字段,user_id字段可能很大,于是我提mysql工单alter table xxx A ...
- 10年工作经验老程序员推荐的7个开发类工具
做.NET软件工作已经10年了,从程序员做到高级程序员,再到技术主管,技术总监.见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio ...
- c++和c语言的区别_C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂...
差不多是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输 ...
- feign post 传递空值_HTTP中GET与POST的区别,99 %的人都理解错了
1 GET与POST GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body ...
- autojs怎么post协议_超9成人都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
- firefox 接受post 不完整_HTTP中GET与POST的区别,99 %的人都理解错了
1 GET与POST GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body ...
- 99%的人都理解错了GET与POST的区别
原文链接:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3 ...
- 99%的人都理解错了HTTP中GET与POST的区别
GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...
最新文章
- java集合学生信息_java 使用 集合 制作学生管理系统
- SAP Spartacus Unit List Component的设计明细 - UnitListComponent
- 一文搞定移动端适配!
- Mysql物化视图应用
- 不同应用系统之间数据交互的几种方式
- CSS3 基础(1)——选择器详解
- 软件项目建议书模板(免费)
- 用Python对自己的文章做文本分析
- 【学习笔记】C51 keil v4 流水灯简单代码的编写
- Python——银行管理系统
- 外卖返利系统公众号外卖cps返利小程序淘宝客程序淘客侠客外卖CPS
- 手把手Django入门 初步实现管理职位后台
- yyyy-MM-dd和YYYY-MM-dd格式化日期的区别你知道吗?
- Eigen: C++开源矩阵计算库
- Component name XXX should always be multi-word
- MySql实验嵌套查询_数据库实验:SQL嵌套查询
- 一年级的小孩可以学习机器人编程
- json 转 csv python
- 新浪微博OAuth认证和存储
- uml 符号关系示意
热门文章
- 4. matlab 中的axis与axes的区别
- Cmake软件编译opencv报错,CMake Warning at cmake/OpenCVDownload.cmake:193 (message): FFMPEG: Download...
- 20154312曾林 - Exp1 PC平台逆向破解
- 完成个人中心—导航标签
- SQLServer怎样把本地数据导入到远程服务器上(转载)
- 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...
- PL SQL笔记(三)
- cucumber 文件目录结构和执行顺序
- 重读TCP协议(3)
- 利用OWC创建图表的完美解决方案