在建立數據庫教程字段的時候,遇到數字類型的時候,如int(4),我曾經一度認為是長度,後來測試的時候發現無論我設置多少,都不影響插入數據的長度,在網上搜了相關的解釋如下:
mysql教程 int(x) 中 x 的含義
這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中存儲值的寬度,也 不是為了限制那些超過該列指定寬度的值的可被顯示的數字位數。注意,如果在一個整型列中存儲一個超過顯示寬度的更大值時,當 mysql 為某些復雜的聯結(join)生成臨時表時,你可能會遇到問題,因為在這種情況下,mysql 信任地認為所有的值均適合原始的列寬度。
而int本身就是4個字節 bigint是8個字節 所以說int(x)的含義就是 int決定數據存儲的字節 x表示期望數據的列寬度
在sql語句中int代表你要創建字段的類型,int代表整型,11代表字段的長度。
這個代表顯示寬度
整數列的顯示寬度與mysql需要用多少個字符來顯示該列數值,與該整數需要的存儲空間的大小都沒有關系,比如,不管設定了顯示寬度是多少個字符,bigint都要占用8個字節。
作為對 ansi/iso sql92 標准的一個擴展,mysql 也支持整型類型 tinyint、mediumint 和 bigint。另外一個擴展是 mysql 支持隨意指定一個整型數值的顯示格式,這通過在類型的基本關鍵詞後跟一個括號來實現(例如 int(4))。這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中存儲值的寬度,也不是為了限制那些超過該列指定寬度的值的可被顯示的數字位數。當與可選的擴展屬性 zerofill 一起使用時,缺省填補用的空格被零代替。舉例來說,一個列被定義為 int(5) zerofill,插入的值 4 被檢索出來時為 00004。注意,如果在一個整型列中存儲一個超過顯示寬度的更大值時,當 mysql 為某些復雜的聯結(join)生成臨時表時,你可能會遇到問題,因為在這種情況下,mysql 信任地認為所有的值均適合原始的列寬度。
不過我在mysql(windows下)中,還從來沒有試出過zerofill的功能
int(m),integer(m) 32位整數(4字節....)
其實這個m跟int能表示的范圍沒有關系,只要你選擇了int,int是用4個字節表示,1個字節8位,若表示無符號數時可以表示的范圍是 0 ------- 232-1 ,你可以存儲任何在這個范圍內的數字。
但也不是說跟表示完全沒關系,mysql中有個zerofll,當建表時選擇了0 填充之後存儲就會有很大的不同,這時如果你選擇的是int(4) 你存儲12則數據庫中存儲的是0012,如果填寫12345,此時超過了他的指定寬度則按原樣存儲。