在mysql中int(11)的列的大小是多少?
和可以存储在这些列中的最大值?
在mysql中int(11)的列的大小是多少?
和可以存储在这些列中的最大值?
当前回答
INT(x)只会在显示方面有所不同,即以x位数显示数字,而不限于11。您使用ZEROFILL对它进行配对,它将在0的前面,直到它匹配您的长度。
对于INT(x)中的任意个数的x
如果存储值的数字小于x,则ZEROFILL将在0的前面。
INT(5)存储值为32的ZEROFILL将显示00032 存储值为32的INT(5)将显示32 INT的存储值为32将显示32
如果存储值的数字比x多,它将按原样显示。
INT(3)存储值为250000的ZEROFILL将显示250000 存储值为250000的INT(3)将显示250000 存储值为250000的INT将显示250000
存储在数据库中的实际值不受影响,大小仍然相同,任何计算都将正常进行。
这也适用于BIGINT, MEDIUMINT, SMALLINT和TINYINT。
其他回答
我认为int(11)的最大值是4294967295
在MySQL中,整数int(11)的大小为4字节,等于32位。
带符号的值是-2的32-1次方到0到2的32-1次方-1 = -2147483648到0到2147483647
无符号值是:0到2^32-1 = 0 ~ 4294967295
4294967295是答案,因为int(11)显示最多11位数字IMO
正如其他人所说,列可以存储的最小/最大值以及以字节为单位占用多少存储空间仅由类型定义,而不是长度。
很多答案都说(11)部分只影响显示宽度,这并不完全正确,但主要是这样。
int(2)不指定零填充的定义:
仍然接受100的值 输出时仍然显示值100(不是0或00) 显示宽度将是选择查询输出的最大值的宽度。
(2)将做的唯一一件事是如果还指定了zerofill:
值1将显示为01。 在显示值时,列的宽度将始终为该列可能获得的最大值(对于整数来说是10位数字),而不是显示该列在特定选择查询中需要显示的最大值所需的最小宽度(可能要小得多)。 列仍然可以接受,并显示超过长度的值,但这些值不会以0作为前缀。
了解所有细微差别的最佳方法是运行:
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;
它将输出:
+----+-------+-------+------------+-------+
| id | int1 | int2 | zf1 | zf2 |
+----+-------+-------+------------+-------+
| 1 | 10000 | 10000 | 0000010000 | 10000 |
| 2 | 100 | 100 | 0000000100 | 100 |
+----+-------+-------+------------+-------+
这个答案是在Linux的MySQL 5.7.12上测试的,在其他实现中可能有变化,也可能没有变化。
不管指定的长度是多少,INT总是4个字节。
TINYINT = 1字节(8位) SMALLINT = 2字节(16位) MEDIUMINT = 3字节(24位) INT = 4字节(32位) BIGINT = 8字节(64位)。
长度只是指定在使用mysql命令行客户端选择数据时要填充多少字符。12345存储为int(3)将仍然显示为12345,但如果它存储为int(10),它仍然显示为12345,但您可以选择填充前五位数字。例如,如果您添加了ZEROFILL,它将显示为0000012345。
... 最大值将是2147483647(有符号)或4294967295(无符号)