多年來,我一直在假設當我創建一個MySQL表類型bigint(12)的新列,該字段限制爲最多12位數的整數。不過,我最近注意到,最多可以寫入16位數字的值並從bigint(12)定義的列中選出,沒有任何警告或問題。MySQL int定義說明
有人可以幫我理解爲什麼會出現這種情況,列定義實際上意味着什麼?提前致謝!
多年來,我一直在假設當我創建一個MySQL表類型bigint(12)的新列,該字段限制爲最多12位數的整數。不過,我最近注意到,最多可以寫入16位數字的值並從bigint(12)定義的列中選出,沒有任何警告或問題。MySQL int定義說明
有人可以幫我理解爲什麼會出現這種情況,列定義實際上意味着什麼?提前致謝!
bigint(12)根本沒有被截斷。 12用於顯示目的。
數字類型屬性
MySQL支持用於 擴展選擇指定的整數數據類型的在 括號顯示 寬度爲base關鍵字 以下類型。例如,INT(4) 指定具有四位數的顯示寬度 的INT。此可選顯示器 寬度可由應用程序使用至 顯示整數值,其寬度爲 ,小於爲 列指定的寬度,方法是將它們用 空格填充。 (即,該寬度是 存在於與 返回結果集的元數據。無論是使用或不使用 是由應用程序。)
顯示寬度不限制值,可以是範圍在列中存儲 。它也不會阻止 的值比列顯示的寬度顯示不正確。
閱讀Numeric Type Attributes
部分從MySQL文檔INT(4) specifies an INT with a display width of four digits
所以你告訴我的是,通過指定的12個,我是在資源方面實際上沒有任何儲蓄,它只是一個可選的值一個顯示程序可以選擇是否忽略。基本上,如果我使用bigint(X),它可以存儲bigint可以存儲的所有值的值,併爲此適當地分配磁盤空間? – 2010-12-02 08:21:23