KXIN
发布于 2025-07-25 / 0 阅读
0
0

int(11)中的11代表什么含义?

int(11)中的11,不影响字段存储的范围,只影响展示效果。

提问

MySQL的字段,unsigned int(3)和unsigned int(6),能存储的数值范围是否相同。如果不同,分别是多大?

回答

不同,int(3)最多显示3位,int(6)最多显示6位。

如果你的答案和上面的一致,恭喜你和我犯了一样的错误。

真实情况

我们建立下面这张表

CREATE TABLE 'test'(
    'id' int(10) unsigned NOT NULL AUTO_INCREMENT,
    'i1' int(3) unsigned zerofill DEFAULT NULL,
    'i2' int(6) unsigned zerofill DEFAULT NULL,
    PRIMARY KEY('id')
) ENGINE=MyISAM DEFUALT CHARSET=utf8

插入一些数据后

发现,无论是int(3),int(6),都可以显示6位以上的整数。但是,当数字不足3位或者6位时,前面会用0补齐。

查下手册,解释如下

MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,int(4))。该可选显示宽度规定用于宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

也就是说,int的长度并不影响数据的存储精度,长度只和显示有关,为了让大家看得更清楚,我们上面例子的建表语句中,使用了zerofill。

结论

无论是unsigned int(3)或unsigned int(6),存储的都是4字节无符号整数,也就是0 ~ 2^32。


评论