2011-03-10 66 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

相關問題