欢迎关注方志朋的博客,回复”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) 的区别?很多老程序都理解错了!相关推荐

  1. zend optimizer php5.5,PHP_PHP5.3以上版本安装ZendOptimizer扩展,现在很多PHP程序都需要ZendOptimi - phpStudy...

    PHP5.3以上版本安装ZendOptimizer扩展 现在很多PHP程序都需要ZendOptimizer环境,但是ZendOptimizer在PHP5.2之后已经被支持,那怎么办,Zend也不会这么 ...

  2. int(1) 和 int(10) 有什么区别?资深开发竟然都理解错了!

    文章来源:https://sourl.cn/ZVQP6t 困 惑 最近遇到个问题,有个表的要加个user_id字段,user_id字段可能很大,于是我提mysql工单alter table xxx A ...

  3. 10年工作经验老程序员推荐的7个开发类工具

    做.NET软件工作已经10年了,从程序员做到高级程序员,再到技术主管,技术总监.见证了Visual Studio .NET 2003,Visul Studio 2005, Visual Studio ...

  4. c++和c语言的区别_C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂...

    差不多是win98跟winXP的关系.C++是在C的基础上增加了新的理论,玩出了新的花样.所以叫C加加. C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输 ...

  5. feign post 传递空值_HTTP中GET与POST的区别,99 %的人都理解错了

    1 GET与POST GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body ...

  6. autojs怎么post协议_超9成人都理解错了HTTP中GET与POST的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

  7. firefox 接受post 不完整_HTTP中GET与POST的区别,99 %的人都理解错了

    1 GET与POST GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body ...

  8. 99%的人都理解错了GET与POST的区别

    原文链接:https://mp.weixin.qq.com/s?__biz=MzI3NzIzMzg3Mw==&mid=100000054&idx=1&sn=71f6c214f3 ...

  9. 99%的人都理解错了HTTP中GET与POST的区别

    GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二. 最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数. 你可能自己 ...

最新文章

  1. java集合学生信息_java 使用 集合 制作学生管理系统
  2. SAP Spartacus Unit List Component的设计明细 - UnitListComponent
  3. 一文搞定移动端适配!
  4. Mysql物化视图应用
  5. 不同应用系统之间数据交互的几种方式
  6. CSS3 基础(1)——选择器详解
  7. 软件项目建议书模板(免费)
  8. 用Python对自己的文章做文本分析
  9. 【学习笔记】C51 keil v4 流水灯简单代码的编写
  10. Python——银行管理系统
  11. 外卖返利系统公众号外卖cps返利小程序淘宝客程序淘客侠客外卖CPS
  12. 手把手Django入门 初步实现管理职位后台
  13. yyyy-MM-dd和YYYY-MM-dd格式化日期的区别你知道吗?
  14. Eigen: C++开源矩阵计算库
  15. Component name XXX should always be multi-word
  16. MySql实验嵌套查询_数据库实验:SQL嵌套查询
  17. 一年级的小孩可以学习机器人编程
  18. json 转 csv python
  19. 新浪微博OAuth认证和存储
  20. uml 符号关系示意

热门文章

  1. 4. matlab 中的axis与axes的区别
  2. Cmake软件编译opencv报错,CMake Warning at cmake/OpenCVDownload.cmake:193 (message): FFMPEG: Download...
  3. 20154312曾林 - Exp1 PC平台逆向破解
  4. 完成个人中心—导航标签
  5. SQLServer怎样把本地数据导入到远程服务器上(转载)
  6. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(三) --高级设置一...
  7. PL SQL笔记(三)
  8. cucumber 文件目录结构和执行顺序
  9. 重读TCP协议(3)
  10. 利用OWC创建图表的完美解决方案