MySQL中 int(11)和int(10)有没有区别

引言

依稀还记得有次面试,有面试官问我int(10)int(11)有什么区别,当时觉得就是长度的区别吧!面试官最后也没有给反馈,我也就以为自己答对了。直到有一次有个同学又跟我谈起这个事,才去查了以下,发现事情并没有哪么简单… …

最后查出的结果是:这里的M代表的并不是存储在数据库中的具体的长度,以前总是会误以为int(3)只能存储 3个长度的数字,int(11)就会存储 11 个长度的数字,这是大错特错的。

int(10)也可以代表 2147483647 这个值int(11)也可以代表。

要查看出不同效果记得在创建类型的时候加 zerofill这个值,表示用 0 填充,否则看不出效果的。

我们通常在创建数据库的时候都不会加入这个选项,所以可以说他们之间是没有区别的。

声明字段是int类型的那一刻起,int就是占四个字节,一个字节 8 位,也就是4*8=32,可以表示的数字个数是 2的 32 次方(2^32 = 4 294 967 296个数字)

4 294 967 296个数字也就是0~4 294 967 295,当然如果区分正负号的话所存的数字会比较小。

知识点

int(M) 中的M指示最大显示宽度,最大有效显示宽度是 255,且显示宽度与存储大小或类型包含的值的范围无关。

首先说一下 MySQL 的数值类型,MySQL 支持所有标准 SQL 数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。关键字 INTINTEGER 的同义词,关键字 DECDECIMAL 的同义词。

BIT 数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDBBDB表。 作为 SQL 标准的扩展,MySQL 也支持整数类型TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

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

当结合可选扩展属性 ZEROFILL 使用时, 默认补充的空格用零代替。例如,对于声明为 INT(5) ZEROFILL 的列,值 4 检索为 00004。请注意如果在整数列保存超过显示宽度的一个值,当 MySQL 为复杂联接生成临时表时会遇到问题,因为在这些情况下 MySQL 相信数据适合原列宽度。

所有整数类型可以有一个可选(非标准)属性 UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。

总结

所以,int(2)int(11)后的括号中的字符表示显示宽度,整数列的显示宽度与 MySQL 需要用多少个字符来显示该列数值,与该整数需要的存储空间的大小都没有关系,int类型的字段能存储的数据上限依旧是2147483647(有符号型)和4294967295(无符号型)。

Github地址:https://github.com/Bylant/LeetCode

优快云地址:https://blog.youkuaiyun.com/ZBylant
微信公众号 在这里插入图片描述

### 回答1: int10int11都是MySQL中的整数类型,但它们的区别在于它们能够存储的数字范围不同。int10可以存储的数字范围是-2147483648到2147483647,而int11可以存储的数字范围是-9223372036854775808到9223372036854775807。因此,如果需要存储更大的数字,应该选择int11。 ### 回答2: MySQL中的int10int11是两种数据类型,它们之间的主要区别在于其最大值的不同。 int10是指10位带符号整数,其取值范围为-2147483648到2147483647,最大值为10位带符号整数能表示的最大值。 int11是指11位带符号整数,其取值范围为-1099511627776到1099511627775,最大值为11位带符号整数能表示的最大值。 因此,int11的取值范围比int10更大,最大值也更高。但需要注意的是,使用int11需要更多的存储空间,因为它需要11个字节来存储,而int10只需要4个字节。 在实际使用中,我们需要根据具体的需求存储空间来选择使用int10还是int11,如果需要更大的取值范围,可以选择int11,但需要注意它的存储空间较大。同时,对于一些较小的数值,使用int11会浪费存储空间,此时可以选择int10进行存储。 ### 回答3: MySQL中的int类型用于存储整型数据。其中int10int11都属于int类型,但它们之间是有一定的区别的。 首先,int10可以存储10位整数,即最大值为2147483647,最小值为-2147483648。而int11可以存储11位整数,即最大值为4294967295,最小值为-4294967296。从数据范围上来看,int11可以存储更大的整数,因此在存储很大的数字时会更加方便,而int10的数据范围则相对较小。 其次,由于int11需要占用更多的存储空间,所以它与int10的存储空间也有所区别int10占用4个字节,而int11占用5个字节。这意味着在存储相同数量的数据时,int10占用的空间会更小,而int11则需要更多的存储空间。 除了这些差异之外,int10int11在使用处理上没有其他显著的区别。它们都是整型数据类型,支持常规的整数计算比较操作。当在MySQL中定义表格时,可以根据具体需求选择使用哪种数据类型。 总的来说,int10int11区别在于它们的数据范围存储空间大小。对于小型项目来说,使用int10足以满足需求,而在需要存储较大的整型数据时可以选择int11。但是,应该注意的是,为了避免内存浪费,并避免出现溢出等问题,在选择具体的数据类型时还应注意合理匹配。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值