MySQL數據庫中數值字段類型長度int(11)和Decimal(M,D)詳解
下圖為Mysql支持的數值類型及取值范圍
需要注意
這里的M代表的并不是存儲在數據庫中的具體的長度,如果誤以為int(3)只能存儲3個長度的數字,int(11)就會存儲11個長度的數字,這是不對的 tinyint(1) 和 tinyint(4) 中的1和4并不表示存儲長度,只有字段指定zerofill才是有用(也就是零填充時), 如tinyint(4),如果實際值是2,如果列指定了zerofill,查詢結果就是0002,左邊用0來填充`。
二、有無限制的區別是什么對應Integer 類型而言,僅表示字段的顯示寬度。對于DECIMAL類型,表示數字的總數。對于字符字段,這是可以存儲的最大字符數,例如VARCHAR(20)可以存儲20個字符。顯示寬度并不影響可以存儲在該列中的最大值。int(5)和int(11) 所能存儲的最大范圍是一樣的。將某個字段設置成INT(20)并不意味著將能夠存儲20位數字,這個字段最終能存儲的最大范圍還是 INT 的范圍。三、有無符號的區別是什么那么問題來了,既然加不加數字并沒有什么區別,那為什么還多此一舉呢?
“正常”情況下確實沒有什么區別,只有當字段設置為UNSIGNED ZEROFILL 屬性時,INT 增加數字才會有意義。表示如果要存儲的數字少于N 個字符,則這些數字將在左側補零。
四、常用的int(11)代表什么意思id INT(11) NOT NULL AUTO_INCREMENT,在一些建表語句會出現上面 int(11) 的類型,那么其代表什么意思呢?
對于Integer類型括號中的數字稱為字段的顯示寬度。這與其他類型字段的含義不同。顯示寬度并不影響可以存儲在該列中的最大值。INT(5) 和 INT(11)可以存儲相同的最大值。哪怕設置成 INT(20) 并不意味著將能夠存儲20位數字(BIGINT),該列還是只能存儲INT的最大值。對于DECIMAL類型,表示數字的總數。對于字符字段,這是可以存儲的最大字符數,例如VARCHAR(20)可以存儲20個字符。當列設置為UNSIGNED ZEROFILL時,INT(11)才有意義,其表示的意思為如果要存儲的數字少于11個字符,則這些數字將在左側補零。
五、簡述Decimal(M,D)數據類型用法當我們需要存儲小數,并且有精度要求,比如存儲金額時,通常會考慮使用DECIMAL字段類型。
1.簡述語法是DECIMAL(M,D)
以上就是MySQL數據庫中數值字段類型長度int(11)和Decimal(M,D)詳解的詳細內容,更多關于MySQL數值字段類型長度的資料請關注好吧啦網其它相關文章!