• MySQL中的int(11)类型后的括号是什么意思?ZEROFILL属性


    MySQL中的int(11)类型后的括号是什么意思?

    首先回答一下括号中的参数表示 显示宽度与int的能插入数据的范围没有任何关系 。 例如:int(5):当数据宽度小于5位的时候在数字前面需要用 字符填满宽度该项功能需要配合“ ZEROFILL ”使用,表示用“0”在左边填满至5位,否则指定显示宽度没有意义。

    该属性MySQL8版本已经不推荐使用。

    显示宽度属性

    在MySQL5版本中:

    • 创建test_int1表

      CREATE TABLE test_int1 ( 
      X TINYINT, 
      Y SMALLINT, 
      z MEDIUMINT, 
      m INT, 
      n BIGINT );
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 查看表结构

      DESC test_int1;
      
      • 1

      在这里插入图片描述

    • TINYINT有符号数和无符号数的取值范围分别为-128 ~ 127和0 ~ 255,由于负号占了一个数字位,因此 TINYINT默认的显示宽度为4。同理,其他整数类型的 默认显示宽度与其有符号数的最小值的宽度相同

    • MySQL整型的取值范围
      在这里插入图片描述

    结论:

    单纯使用显示宽度参数,是没有任何效果的。想要使用o字符填满宽度,需配合 **ZEROFILL**使用

    ZEROFILL属性

    ZEROFILL : 0填充,(如果某列是ZEROFILL,那么MySQL会自动为当前列添加UNSIGNED属性),如果指 定了ZEROFILL只是表示不够M位时,用0在左边填充,如果超过M位,只要不超过数据存储范围即可。
    原来,在 int(M) 中,M 的值跟 int(M) 所占多少存储空间并无任何关系。 int(3)、int(4)、int(8) 在磁盘上都 是占用 4 bytes 的存储空间。也就是说,int(M),必须和UNSIGNED ZEROFILL一起使用才有意义。如果整 数值超过M位,就按照实际位数存储。只是无须再用字符 0 进行填充。

    在使用ZEROFILL时,会自动添加UNSIGNED属性

    举例:

    • 创建test_int2表:

      CREATE TABLE test_int2(
      	f1 INT,
      	f2 INT(5),
      	f3 INT(5) ZEROFILL
      );
      
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • 查看表结构

      DESC test_int2;
      
      • 1

      在这里插入图片描述

    • 插入数据

      INSERT INTO test_int2 VALUES(123,123,123),
      							(1234,1234,1234),
      							(12345,12345,12345),
      							(123456,123456,123456);
      
      • 1
      • 2
      • 3
      • 4
    • 查看数据

      在这里插入图片描述

    结果可以看出: 配合使用了 zerofill属性的字段 f3,在添加数据不足5位时,会用0来填充 。且对添加数据的大小并没有什么限制。不使用zerofill属性的f2,跟不指定宽度的f1效果相同。

    总结

    int(M)中的显示宽度属性M是为了在,插入数据不足M位时,使用字符来在左边填充至M位。需配合zerofill属性使用

    补充:UNSIGNED属性

    UNSIGNED:无符号类型(非负) ,所有的整数类型都有一个可选的属性UNSIGNED(无符号属性),无 符号整数类型的最小取值为0。所以,如果需要在MySQL数据库中保存非负整数值时,可以将整数类型设 置为无符号类型。 int类型默认显示宽度为int(11),无符号int类型默认显示宽度为int(10)。

    CREATE TABLE test_int3(
    f1 INT UNSIGNED
    );
    DESC test_int3;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

  • 相关阅读:
    基于springboot实现致远汽车租赁平台管理系统项目【项目源码+论文说明】计算机毕业设计
    微服务天花板,Alibaba Cloud Alibaba 精通笔记,知乎牛客狂转 10w 次,github 狂揽 14k 星
    具有细胞膜通透性的铕配合物单线态氧荧光探针/细胞膜次氯酸根荧光探针的相关研究
    document.body.clientHeight获取可视区域高度为0问题解决
    【408数据结构与算法】—堆排序(二十一)
    焱融全闪系列科普| 为什么 SSD 需要 NVMe?
    算法-二叉树前中后层遍历
    docker 容器优雅关闭 —— 筑梦之路
    文件操作(个人学习笔记黑马学习)
    Spring Initializr私服搭建和定制化模板
  • 原文地址:https://blog.csdn.net/weixin_52797128/article/details/126666230