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 );
    
  • 查看表结构

    DESC test_int1;
    

    在这里插入图片描述

  • 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
    );
    
    
  • 查看表结构

    DESC test_int2;
    

    在这里插入图片描述

  • 插入数据

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

    在这里插入图片描述

结果可以看出: 配合使用了 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;

在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值