在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