当前位置:   article > 正文

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

int后加括号

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

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/322334
推荐阅读
相关标签
  

闽ICP备14008679号