MySQL數(shù)據(jù)庫中數(shù)值字段類型長度int(11)和Decimal(M,D)詳解
一、Mysql中數(shù)值類型
下圖為Mysql支持的數(shù)值類型
及取值范圍
- BIT[M] 位字段類型,M表示每個值的位數(shù),范圍從1到64,如果M被忽略,默認為1
- TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默認為4 ,小的整數(shù)。帶符號的范圍是-128到127。無符號的范圍是0到255。
- SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認為6 ,小的整數(shù)。帶符號的范圍是-32768到32767。無符號的范圍是0到65535。
- MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認為9 ,中等大小的整數(shù)。帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。
- INT[(M)] [UNSIGNED] [ZEROFILL] M默認為11 ,普通大小的整數(shù)。帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。
- BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認為20 ,大整數(shù)。帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。
需要注意
這里的M代表的并不是存儲在數(shù)據(jù)庫中的具體的長度,如果誤以為int(3)只能存儲3個長度的數(shù)字,int(11)就會存儲11個長度的數(shù)字,這是不對的
tinyint(1) 和 tinyint(4) 中的1和4并不表示存儲長度,只有字段指定zerofill才是有用(也就是零填充時), 如tinyint(4),如果實際值是2,如果列指定了zerofill,查詢結(jié)果就是0002,左邊用0來填充`。
二、有無限制的區(qū)別是什么
- 對應Integer 類型而言,僅表示字段的顯示寬度。
- 對于DECIMAL類型,表示數(shù)字的總數(shù)。
- 對于字符字段,這是可以存儲的最大字符數(shù),例如VARCHAR(20)可以存儲20個字符。
- 顯示寬度并不影響可以存儲在該列中的最大值。int(5)和int(11) 所能存儲的最大范圍是一樣的。
- 將某個字段設置成INT(20)并不意味著將能夠存儲20位數(shù)字,這個字段最終能存儲的最大范圍還是 INT 的范圍。
三、有無符號的區(qū)別是什么
那么問題來了,既然加不加數(shù)字并沒有什么區(qū)別,那為什么還多此一舉呢?
“正常”情況下確實沒有什么區(qū)別,只有當字段設置為UNSIGNED ZEROFILL 屬性時,INT 增加數(shù)字才會有意義。
表示如果要存儲的數(shù)字少于N 個字符,則這些數(shù)字將在左側(cè)補零。
四、常用的int(11)代表什么意思
id INT(11) NOT NULL AUTO_INCREMENT,
在一些建表語句會出現(xiàn)上面 int(11) 的類型,那么其代表什么意思呢?
- 對于Integer類型括號中的數(shù)字稱為字段的顯示寬度。這與其他類型字段的含義不同。
- 顯示寬度并不影響可以存儲在該列中的最大值。INT(5) 和 INT(11)可以存儲相同的最大值。哪怕設置成 INT(20) 并不意味著將能夠存儲20位數(shù)字(BIGINT),該列還是只能存儲INT的最大值。
- 對于DECIMAL類型,表示數(shù)字的總數(shù)。
- 對于字符字段,這是可以存儲的最大字符數(shù),例如VARCHAR(20)可以存儲20個字符。
當列設置為UNSIGNED ZEROFILL時,INT(11)才有意義,其表示的意思為如果要存儲的數(shù)字少于11個字符,則這些數(shù)字將在左側(cè)補零。
五、簡述Decimal(M,D)數(shù)據(jù)類型用法
當我們需要存儲小數(shù),并且有精度要求,比如存儲金額時,通常會考慮使用DECIMAL字段類型。
1.簡述
語法是DECIMAL(M,D)
- DECIMAL(M,D)中M為總長度,D為小數(shù)點后的保留的位數(shù),M范圍是1到65,D范圍是0到30。
- M大于D,存儲數(shù)值時,小數(shù)位不足會自動補0,首位數(shù)字為0自動忽略。
2.重點
六、總結(jié)
- 對于Integer 類型而言,“數(shù)字”并不會限制其能存儲的最大范圍。
- DECIMAL(M,D)中M為總長度,D為小數(shù)點后的保留的位數(shù)
- 對于字符字段,這是可以存儲的最大字符數(shù),例如VARCHAR(20)最多存儲20個字符。
- 如果誤以為int(3)只能存儲3個長度的數(shù)字,int(11)就會存儲11個長度的數(shù)字,
這是不對的
3和11并不表示存儲長度,只有字段指定zerofill才是有用(也就是零填充時)
,左邊用0來填充`。**
以上就是MySQL數(shù)據(jù)庫中數(shù)值字段類型長度int(11)和Decimal(M,D)詳解的詳細內(nèi)容,更多關于MySQL數(shù)值字段類型長度的資料請關注腳本之家其它相關文章!
相關文章
phpmyadmin出現(xiàn)#2003服務器無響應解決方法小結(jié)
出現(xiàn)登陸phpmyadmin出現(xiàn) #2003 - 服務器沒有響應最先想到的是你的mysql服務器是不是停止了檢查一下,如果是mysql服務器停止服務了重啟就可以解決問題了2012-04-04