美文网首页
Mysql:int int(3) int(10) 的区别

Mysql:int int(3) int(10) 的区别

作者: 蓉漂里的小白 | 来源:发表于2023-04-12 23:03 被阅读0次

今天一个实习生问了我一个问题,他说int(3),int(4),int 有区别吗?
我:。。。没关注过呀?

1. 网上学习

于是上网各种查文章,总结了下面4条结论:

  1. int类型的字段就是占四个字节,一个字节8位,也就是4*8=32位。
  2. int 可表示的范围:有符号为[-2147483648,2147483647],无符号为[0, 4294967295]
  3. 不论是选择int(3)还是int(11),它在数据库里面存储的都是4个字节的长度
  4. 当int(3) 配合zerofill 使用时,如果你输入的数值是17,系统会默认为你存储值为017
    解释一下:这个3代表的仅是一个默认的长度,当不足3位时,系统会帮用零补全,当超过3位时,就没有任何的影响与副作用

2. 实践

收集好网上的结论后,进入了实测阶段

2.1 建表

CREATE TABLE `students` (
  `sId` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `sInt` INT DEFAULT NULL,
  `sInt_3` INT(3) ZEROFILL DEFAULT NULL,
  `sInt_10` INT(10) UNSIGNED DEFAULT NULL,
  `sInt_11` INT(11) ZEROFILL DEFAULT NULL,
  PRIMARY KEY (`sId`)
) ENGINE=INNODB DEFAULT CHARSET=utf8mb4;

2.2 验证网上结论

  1. 不用验证了,mysql 基础
  2. 创建一行数据,写入最大值,检查是否可以存储
INSERT into students values (1,2147483647,1,1,1)
image.png
  1. 创建一行数据,写入最大值,检查int(3)int(10)int(11)是否可以存储
INSERT into students values (3,2147483647,2147483647,2147483647,2147483647)
image.png
  1. 创建一行数据,int(3),int(10), int(11) 都写入17,检查存储结果
INSERT into students values (3,17,17,17,17)
image.png

总结:

  1. Int 后面加的数据,并不会影响int的存储范围,同时int后面加了范围后,需要配置zerofill 才会有效,常用于编号之中如学号之类

  2. 测试结果和网上说的有所不同,并没有实现int(3) zerofill 后,宽度就只显示3位,而是不管设置几,宽度都是10位,输入的值不足10位,前面用0补齐

  3. 所以不知道是我mysql 版本问题还是哪里配置的问题,如果有了解的网友辛苦评论一把

相关文章

  • 日常问题集

    最近面试,记录下面试的问题 MYSQL MYSQL 中 int(10) 与int(11) 有什么区别。》 没什么区...

  • mysql 协议

    mysql 数据类型 Integer mysql的整型有两种 固定长度int<1>int<2>int<3>int<...

  • const int &a 、int &a、int a的区别

    int a 这样的函数调用时是不会改变参数的值的,在函数中也就是以一个局部变量的形式存在,当函数结束时,变量a的生...

  • 指针相关

    1、a和&a的区别 void main(){int a[5]={1,2,3,4,5};int ptr=(int )...

  • 集合----Arraylist

    数组:存储多个对象int[] score = {1,2,3};int[] score = new int[10];...

  • Android layout(int ,int,int,int)

    ViewGroup.layout(int l, int t, int r, int b)这个方法是确定View的大...

  • new int[10] 和 new int[10]()区别

    直接上结果 0 536870912 0 536870912 -957349872 32767 -111443267...

  • 指针与多维数组

    int a[10][20];int b[10];语法上讲 a[3][4]和b[3][4]都是对一个int类型对象的...

  • MySQL整型 tinyint/smallint/mediumi

    1个字节 = 8位 问题 int(4)和int(10)有区别吗? 答 除非设置了zerofill,其他时候int(...

  • C#数组

    创建 一维数组int[] n =new int[10]; //不赋值int[] n = {1,2,3}; ...

网友评论

      本文标题:Mysql:int int(3) int(10) 的区别

      本文链接:https://www.haomeiwen.com/subject/crzoddtx.html