在MySQL如果我们创建的INT
字段数据类型,且再未指定任何长度/值,它会自动成为int(11)
如果我们设置属性UNSIGNED或UNSIGNED ZEROFILL然后它变成int(10)
MySQL数据类型INT(11),而UNSIGNED INT(10)?
哪里此长度(1)去?
在MySQL如果我们创建的INT
字段数据类型,且再未指定任何长度/值,它会自动成为int(11)
如果我们设置属性UNSIGNED或UNSIGNED ZEROFILL然后它变成int(10)
MySQL数据类型INT(11),而UNSIGNED INT(10)?
哪里此长度(1)去?
int值可以是-2147483648这些都是11位所以默认显示大小是11
无符号整型不允许负数所以默认它仅需要显示大小10
如下面的文档所示,存储SIGNED INT和UNSIGNED INT所需的位数是相同的,可存储的数字范围仅仅是移位的:
无符号类型可用于允许 列 中只有非负数,或者当您需要该列的较大上数字 数字范围。对于 例如,如果INT列是UNSIGNED, 的列的范围的大小是 相同,但它的端点从 -2147483648到2147483647移位到0和4294967295
刚因为任何人都不太明白Shakti's answer(因为我没有)。下面是为什么视觉表示:
Signed minimum:
- 2 1 4 7 4 8 3 6 4 8
1 2 3 4 5 6 7 8 9 10 11
Unsigned max (also the signed max):
4 2 9 4 9 6 7 2 9 5
1 2 3 4 5 6 7 8 9 10
节省空间的空间与它无关。这只是_display width_,并不以任何方式约束存储的值。 – 2011-07-25 01:40:27
有符号的最大值不是2^32-1,而是2^31-1,因为您有一个符号位,所以无符号最大!=最大符号。 – 2013-02-15 15:49:53
根据the documentation,这个数量仅是显示宽度。
例如,INT(4)指定一个INT,其显示宽度为四位数 。
显示宽度不限制存储在列列中的值范围 。它也不会阻止比显示宽度的列 正确显示更宽的值。例如,指定为SMALLINT列 (3)具有-32768到32767 通常SMALLINT范围内,并且由三个数字允许的范围之外的值被使用多于三个数字显示在全 。
的默认显示宽度为UNSIGNED
INT
比为较少的非UNSIGNED
INT
一个仅仅是因为你将永远不会被显示-
字符。
请注意,您还可以指定任何你喜欢的显示宽度。这仅仅是默认。
在文档中使用术语“数字”在这里略有误导。
太棒了。它意味着显示宽度,而不是值的范围。 – JackXu 2014-04-22 06:21:20
谢谢吨.. btw我也来自比卡内尔:) – diEcho 2011-03-10 07:44:38
@diEcho:太棒了,我们都来自同一个地方。很高兴和你谈谈SO – 2011-03-10 08:51:24
你好Rajasthanis :) ..你的帖子仍然在帮助我们:) – Ravi 2015-02-23 04:43:04