Mat*_*ean 637
一个INT将永远是4个字节,无论是指定的内容长度.
TINYINT = 1字节(8位)SMALLINT = 2个字节(16位)MEDIUMINT = 3个字节(24位)INT = 4个字节(32位)BIGINT = 8个字节(64位).长度仅指定使用mysql命令行客户端选择数据时要显示的字符数.
......最大值为2147483647(签名)或4294967295(未签名)
pri*_*gus 151
INT(somenumber)只会在显示方面产生差异,即以" somenumber "数字显示数字,而不仅限于11.您使用它进行配对ZEROFILL,它将前置零,直到它与您的长度匹配
请注意,存储在数据库中的值不受影响,任何计算仍将按原样运行.
备注:
如果该值的数字少于' somenumber ',ZEROFILL则将前置为零.
INT(5)ZEROFILL的存储值为32将显示00032
INT(5),存储值为32将显示32
INT,存储值为32将显示32
如果该值的数字多于" somenumber ",则将显示存储的值.
INT(3)ZEROFILL,存储值250000将显示250000
INT(3),存储值250000将显示250000
INT,存储值250000将显示250000
类似的情况也适用于BIGINT,MEDIUMINT,SMALLINT和TINYINT.
San*_*kha 110
根据这里,int(11)将占用4个字节的空间,即32位空间,具有 2^(31) = 2147483648最大值和-2147483648最小值.一点是签名.
Pro*_*ter 37
正如其他人所说,列可以存储的最小/最大值以及以字节为单位的存储量仅由类型而不是长度定义.
很多这些答案都说这(11)部分只会影响显示宽度,但这主要是不正确的.
的定义int(2)有没有指定ZEROFILL将:
100100输出时的值(不是0或00)唯一(2)能做的是如果还指定了zerofill:
1将显示一个值01.查看所有细微差别的最佳方法是运行:
CREATE TABLE `mytable` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`int1` int(10) NOT NULL,
`int2` int(3) NOT NULL,
`zf1` int(10) ZEROFILL NOT NULL,
`zf2` int(3) ZEROFILL NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `mytable`
(`int1`, `int2`, `zf1`, `zf2`)
VALUES
(10000, 10000, 10000, 10000),
(100, 100, 100, 100);
select * from mytable;
Run Code Online (Sandbox Code Playgroud)
这将输出:
+----+-------+-------+------------+-------+
| id | int1 | int2 | zf1 | zf2 |
+----+-------+-------+------------+-------+
| 1 | 10000 | 10000 | 0000010000 | 10000 |
| 2 | 100 | 100 | 0000000100 | 100 |
+----+-------+-------+------------+-------+
Run Code Online (Sandbox Code Playgroud)
请注意,即使长度较大,(11)列的显示宽度int(2)也要小得多.
这个答案是针对Linux的MySQL 5.7.12进行测试的,对于其他实现可能会有所不同.
ks1*_*322 32
mysql中int(11)列的大小(以字节为单位)是多少?
(11)- int数据类型的此属性与列的大小无关.它只是整数数据类型的显示宽度.从11.1.4.5开始.数字类型属性:
MySQL支持扩展,可以选择在类型的base关键字后面的括号中指定整数数据类型的显示宽度.例如,INT(4)指定显示宽度为四位的INT.
sha*_*009 19
对此的一个很好的解释可以在这里
找到
总结:int(N)中的数字N经常被列允许的最大大小所混淆,就像在varchar(N)的情况下那样.
但是这不是Integer数据类型的情况 - 括号中的数字N不是列的最大大小,而只是一个参数来告诉MySQL在通过MySQL查看表的数据时显示列的宽度console(当您使用ZEROFILL属性时).
括号中的数字将告诉MySQL有多少个零来填充传入的整数.例如:如果您在设置为INT(5)的列上使用ZEROFILL并且插入了数字78,则MySQL将使用零填充该值,直到该数字满足括号中的数字.即78将成为00078,127将成为00127.总结:括号中的数字用于显示目的.
在某种程度上,除非您使用ZEROFILL属性,否则括号中的数字是无用的.
因此,大小为INT将保持相同即-2147483648到2147483648的签署和 0至4294967295无符号(〜2.15亿和4.2亿,这是为什么开发商仍然不知道在括号后面的数字N的故事的原因之一,因为它几乎不影响数据库,除非它包含超过2亿个行),并且就字节而言,它将是4个字节.
有关整数类型大小/范围的更多信息,请参阅MySQL手册
MER*_*MER 10
虽然不太可能看到这个答案,但我认为以下澄清是值得的:
细节的BIT
显示宽度是,很显然,为了提供关于多少零零填充数显示一些元数据.
如果该数字超出指定的显示宽度,它实际上并不限制从查询返回的数字的长度.
要知道MySQL中整数数据类型实际允许的长度/宽度,请参阅列表和链接:( 类型:TINYINT,SMALLINT,MEDIUMINT,INT,BIGINT);
因此,如上所述,您可以预期显示宽度不会影响标准查询的结果,除非将列指定为ZEROFILL列,
或者
在将数据拉入应用程序并且应用程序正在收集显示用于其他某种填充的宽度.
主要参考:https://blogs.oracle.com/jsmyth/entry/what_does_the_11_mean
在MySQL中,整数的int(11)大小为4个字节,等于32位.
签名值是: - 2^(32-1) to 0 to 2^(32-1)-1
= -2147483648 to 0 to 2147483647
无符号值为:0 to 2^32-1
= 0 to 4294967295