在建立資料庫欄位的時候,遇到數字類型的時候,如int(4),我曾經一度認為是長度,後來測試的時候發現無論我設定多少,都不影響插入資料的長度,在網上搜了相關的解釋如下:
來自:http://www.ccvita.com/175.html
MySQL int(X) 中 X 的含義
這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中儲存值的寬度,也 不是為了限制那些超過該列指定寬度的值的可被顯示的數字位元。注意,如果在一個整型列中儲存一個超過顯示寬度的更大值時,當 MySQL 為某些複雜的連接(join)產生暫存資料表時,你可能會遇到問題,因為在這種情況下,MySQL 信任地認為所有的值均適合原始的列寬度。
而int本身就是4個位元組 bigint是8個位元組 所以說int(X)的含義就是 int決定資料存放區的位元組 X表示期望資料的列寬度
在SQL語句中int代表你要建立欄位的類型,int代表整型,11代表欄位的長度。
這個代表顯示寬度
整數列的顯示寬度與mysql需要用多少個字元來顯示該列數值,與該整數需要的儲存空間的大小都沒有關係,比如,不管設定了顯示寬度是多少個字元,bigint都要佔用8個位元組。
來自:http://matt-u.javaeye.com/blog/380670
作為對 ANSI/ISO SQL92 標準的一個擴充,MySQL 也支援整數型別 TINYINT、MEDIUMINT 和 BIGINT。另外一個擴充是 MySQL 支援隨意指定一個整型數值的顯示格式,這通過在類型的基本關鍵詞後跟一個括弧來實現(例如 INT(4))。這個可選的寬度規格說明是用於在數值顯示時,對某些值的寬度短於該列寬度的值進行左填補顯示的,而不是為了限制在該列中儲存值的寬度,也不是為了限制那些超過該列指定寬度的值的可被顯示的數字位元。當與可選的擴充屬性 ZEROFILL 一起使用時,預設填補用的空格被零代替。舉例來說,一個列被定義為 INT(5) ZEROFILL,插入的值 4 被檢索出來時為 00004。注意,如果在一個整型列中儲存一個超過顯示寬度的更大值時,當 MySQL 為某些複雜的連接(join)產生暫存資料表時,你可能會遇到問題,因為在這種情況下,MySQL 信任地認為所有的值均適合原始的列寬度。
不過我在MySQL(Windows下)中,還從來沒有試出過ZEROFILL的功能。