2010-12-13 25 views
0

我在MySql中的數據類型長度上有點困惑;我閱讀參考手冊http://dev.mysql.com/doc/refman/5.0/en/data-types.html,我知道當我寫「INT(M)」時...爲什麼我不會在MySQL中設置較大的INT數據類型長度的錯誤?

M表示整數類型的最大顯示寬度。對於浮點型和定點型,M是可以存儲的總位數。對於字符串類型,M是最大長度。 M的最大允許值取決於數據類型。

然後,我添加了一個列到我的表與字段數據類型等INT(10)[不無符號]和我知道的最大值是-2147483648/2147483647

但是如果我編輯它以INT(11),MySQL允許我設置更大的長度,但沒有任何錯誤,儘管長度超出了範圍;在這種情況下,只有當我設置一個大於2147483647的值時,我纔會出錯,爲什麼不呢?

謝謝你在前進,

最大

+0

的可能重複[多大的INT,我應該用我的自動增量IDS的MySQL(http://stackoverflow.com/questions/3562737/what-size-int-should-i-use-for-my -autoincrement-IDS-的MySQL) – ajreal 2010-12-13 18:00:46

回答

0

我只能猜測,但我的猜測是,顯示寬度只設置是不是足夠聰明的認識衝突。但是,對於客戶端程序來說,只要看到顯示寬度僅爲建議,我會認爲它不一定是。

1

M值不會影響您可以存儲的數字的範圍。您可以將相同的號碼保存在INT(1)中,如INT(30)。該號碼隻影響ZEROFILL behavior

mysql> CREATE TEMPORARY TABLE foobar(x INT(40) ZEROFILL); 
Query OK, 0 rows affected (0.00 sec) 

mysql> INSERT INTO foobar(x) VALUES (42); 
Query OK, 1 row affected (0.00 sec) 

mysql> SELECT * FROM foobar; 
+------------------------------------------+ 
| x          | 
+------------------------------------------+ 
| 0000000000000000000000000000000000000042 | 
+------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> 
相關問題