在MYSQL的information_schema.COLUMNS
表中,有NUMERIC_PRECISION和COLUMN_TYPE兩列
對於int類型的列,NUMERIC_PRECISION顯示的始終是10,而COLUMN_TYPE列中int(xxx)內的長度缺不一定。
兩者有什么區別呢?在網上找了半天,發現了這篇文章(地址)。
NUMERIC_PRECISION才是這一列(如int)能存儲數據的實際長度,
而COLUMN_TYPE中的比如int(11),這里11是指該字段的顯示長度,int最長只能有10位,這是類型定死的,在10位前可以有一個符號,所以默認顯示位數是11位。
如果我們在定義表結構,創建了一列為int(3)類型,那么實際上該列還是要占用4字節存儲,最多存儲10位數字,只是這一列默認顯示的時候,會以3格寬度顯示罷了。
另:字符串類型的數據沒有這個問題。