2011-03-10 67 views

回答

54

int值可以是-2147483648这些都是11位所以默认显示大小是11

无符号整型不允许负数所以默认它仅需要显示大小10

如下面的文档所示,存储SIGNED INT和UNSIGNED INT所需的位数是相同的,可存储的数字范围仅仅是移位的:

无符号类型可用于允许 列 中只有非负数,或者当您需要该列的较大上数字 数字范围。对于 例如,如果INT列是UNSIGNED, 的列的范围的大小是 相同,但它的端点从 -2147483648到2147483647移位到0和4294967295

http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html

+3

谢谢吨.. btw我也来自比卡内尔:) – diEcho 2011-03-10 07:44:38

+0

@diEcho:太棒了,我们都来自同一个地方。很高兴和你谈谈SO – 2011-03-10 08:51:24

+0

你好Rajasthanis :) ..你的帖子仍然在帮助我们:) – Ravi 2015-02-23 04:43:04

7

刚因为任何人都不太明白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 
+0

节省空间的空间与它无关。这只是_display width_,并不以任何方式约束存储的值。 – 2011-07-25 01:40:27

+3

有符号的最大值不是2^32-1,而是2^31-1,因为您有一个符号位,所以无符号最大!=最大符号。 – 2013-02-15 15:49:53

22

根据the documentation,这个数量仅是显示宽度

例如,INT(4)指定一个INT,其显示宽度为四位数 。

显示宽度不限制存储在列列中的值范围 。它也不会阻止比显示宽度的列 正确显示更宽的值。例如,指定为SMALLINT列 (3)具有-32768到32767 通常SMALLINT范围内,并且由三个数字允许的范围之外的值被使用多于三个数字显示在全 。

默认显示宽度为UNSIGNEDINT比为较少的非UNSIGNEDINT一个仅仅是因为你将永远不会被显示-字符。

请注意,您还可以指定任何你喜欢的显示宽度。这仅仅是默认

在文档中使用术语“数字”在这里略有误导。

+1

太棒了。它意味着显示宽度,而不是值的范围。 – JackXu 2014-04-22 06:21:20

相关问题