2010-12-02 71 views
3

多年來,我一直在假設當我創建一個MySQL表類型bigint(12)的新列,該字段限制爲最多12位數的整數。不過,我最近注意到,最多可以寫入16位數字的值並從bigint(12)定義的列中選出,沒有任何警告或問題。MySQL int定義說明

有人可以幫我理解爲什麼會出現這種情況,列定義實際上意味着什麼?提前致謝!

回答

5

bigint(12)根本沒有被截斷。 12用於顯示目的。

看一看Numeric Types

數字類型屬性

MySQL支持用於 擴展選擇指定的整數數據類型的在 括號顯示 寬度爲base關鍵字 以下類型。例如,INT(4) 指定具有四位數的顯示寬度 的INT。此可選顯示器 寬度可由應用程序使用至 顯示整數值,其寬度爲 ,小於爲 列指定的寬度,方法是將它們用 空格填充。 (即,該寬度是 存在於與 返回結果集的元數據。無論是使用或不使用 是由應用程序。)

顯示寬度不限制值,可以是範圍在列中存儲 。它也不會阻止 的值比列顯示的寬度顯示不正確。

+0

所以你告訴我的是,通過指定的12個,我是在資源方面實際上沒有任何儲蓄,它只是一個可選的值一個顯示程序可以選擇是否忽略。基本上,如果我使用bigint(X),它可以存儲bigint可以存儲的所有值的值,併爲此適當地分配磁盤空間? – 2010-12-02 08:21:23