MySQL數(shù)據(jù)庫(kù)中數(shù)值字段類(lèi)型長(zhǎng)度int(11)和Decimal(M,D)詳解
一、Mysql中數(shù)值類(lèi)型
下圖為Mysql支持的數(shù)值類(lèi)型及取值范圍

- BIT[M] 位字段類(lèi)型,M表示每個(gè)值的位數(shù),范圍從1到64,如果M被忽略,默認(rèn)為1
- TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為4 ,小的整數(shù)。帶符號(hào)的范圍是-128到127。無(wú)符號(hào)的范圍是0到255。
- SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為6 ,小的整數(shù)。帶符號(hào)的范圍是-32768到32767。無(wú)符號(hào)的范圍是0到65535。
- MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為9 ,中等大小的整數(shù)。帶符號(hào)的范圍是-8388608到8388607。無(wú)符號(hào)的范圍是0到16777215。
- INT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為11 ,普通大小的整數(shù)。帶符號(hào)的范圍是-2147483648到2147483647。無(wú)符號(hào)的范圍是0到4294967295。
- BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為20 ,大整數(shù)。帶符號(hào)的范圍是-9223372036854775808到9223372036854775807。無(wú)符號(hào)的范圍是0到18446744073709551615。
需要注意
這里的M代表的并不是存儲(chǔ)在數(shù)據(jù)庫(kù)中的具體的長(zhǎng)度,如果誤以為int(3)只能存儲(chǔ)3個(gè)長(zhǎng)度的數(shù)字,int(11)就會(huì)存儲(chǔ)11個(gè)長(zhǎng)度的數(shù)字,這是不對(duì)的 tinyint(1) 和 tinyint(4) 中的1和4并不表示存儲(chǔ)長(zhǎng)度,只有字段指定zerofill才是有用(也就是零填充時(shí)), 如tinyint(4),如果實(shí)際值是2,如果列指定了zerofill,查詢(xún)結(jié)果就是0002,左邊用0來(lái)填充`。
二、有無(wú)限制的區(qū)別是什么
- 對(duì)應(yīng)Integer 類(lèi)型而言,僅表示字段的顯示寬度。
- 對(duì)于DECIMAL類(lèi)型,表示數(shù)字的總數(shù)。
- 對(duì)于字符字段,這是可以存儲(chǔ)的最大字符數(shù),例如VARCHAR(20)可以存儲(chǔ)20個(gè)字符。
- 顯示寬度并不影響可以存儲(chǔ)在該列中的最大值。int(5)和int(11) 所能存儲(chǔ)的最大范圍是一樣的。
- 將某個(gè)字段設(shè)置成INT(20)并不意味著將能夠存儲(chǔ)20位數(shù)字,這個(gè)字段最終能存儲(chǔ)的最大范圍還是 INT 的范圍。
三、有無(wú)符號(hào)的區(qū)別是什么
那么問(wèn)題來(lái)了,既然加不加數(shù)字并沒(méi)有什么區(qū)別,那為什么還多此一舉呢?
“正常”情況下確實(shí)沒(méi)有什么區(qū)別,只有當(dāng)字段設(shè)置為UNSIGNED ZEROFILL 屬性時(shí),INT 增加數(shù)字才會(huì)有意義。
表示如果要存儲(chǔ)的數(shù)字少于N 個(gè)字符,則這些數(shù)字將在左側(cè)補(bǔ)零。
四、常用的int(11)代表什么意思
id INT(11) NOT NULL AUTO_INCREMENT,
在一些建表語(yǔ)句會(huì)出現(xiàn)上面 int(11) 的類(lèi)型,那么其代表什么意思呢?
- 對(duì)于Integer類(lèi)型括號(hào)中的數(shù)字稱(chēng)為字段的顯示寬度。這與其他類(lèi)型字段的含義不同。
- 顯示寬度并不影響可以存儲(chǔ)在該列中的最大值。INT(5) 和 INT(11)可以存儲(chǔ)相同的最大值。哪怕設(shè)置成 INT(20) 并不意味著將能夠存儲(chǔ)20位數(shù)字(BIGINT),該列還是只能存儲(chǔ)INT的最大值。
- 對(duì)于DECIMAL類(lèi)型,表示數(shù)字的總數(shù)。
- 對(duì)于字符字段,這是可以存儲(chǔ)的最大字符數(shù),例如VARCHAR(20)可以存儲(chǔ)20個(gè)字符。
當(dāng)列設(shè)置為UNSIGNED ZEROFILL時(shí),INT(11)才有意義,其表示的意思為如果要存儲(chǔ)的數(shù)字少于11個(gè)字符,則這些數(shù)字將在左側(cè)補(bǔ)零。
五、簡(jiǎn)述Decimal(M,D)數(shù)據(jù)類(lèi)型用法
當(dāng)我們需要存儲(chǔ)小數(shù),并且有精度要求,比如存儲(chǔ)金額時(shí),通常會(huì)考慮使用DECIMAL字段類(lèi)型。
1.簡(jiǎn)述
語(yǔ)法是DECIMAL(M,D)

- DECIMAL(M,D)中M為總長(zhǎng)度,D為小數(shù)點(diǎn)后的保留的位數(shù),M范圍是1到65,D范圍是0到30。
- M大于D,存儲(chǔ)數(shù)值時(shí),小數(shù)位不足會(huì)自動(dòng)補(bǔ)0,首位數(shù)字為0自動(dòng)忽略。
2.重點(diǎn)

六、總結(jié)
- 對(duì)于Integer 類(lèi)型而言,“數(shù)字”并不會(huì)限制其能存儲(chǔ)的最大范圍。
- DECIMAL(M,D)中M為總長(zhǎng)度,D為小數(shù)點(diǎn)后的保留的位數(shù)
- 對(duì)于字符字段,這是可以存儲(chǔ)的最大字符數(shù),例如VARCHAR(20)最多存儲(chǔ)20個(gè)字符。
- 如果誤以為int(3)只能存儲(chǔ)3個(gè)長(zhǎng)度的數(shù)字,int(11)就會(huì)存儲(chǔ)11個(gè)長(zhǎng)度的數(shù)字,
這是不對(duì)的3和11并不表示存儲(chǔ)長(zhǎng)度,只有字段指定zerofill才是有用(也就是零填充時(shí)),左邊用0來(lái)填充`。**
以上就是MySQL數(shù)據(jù)庫(kù)中數(shù)值字段類(lèi)型長(zhǎng)度int(11)和Decimal(M,D)詳解的詳細(xì)內(nèi)容,更多關(guān)于MySQL數(shù)值字段類(lèi)型長(zhǎng)度的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
MySQL 與 Elasticsearch 數(shù)據(jù)不對(duì)稱(chēng)問(wèn)題解決辦法
這篇文章主要介紹了MySQL 與 Elasticsearch 數(shù)據(jù)不對(duì)稱(chēng)問(wèn)題解決辦法的相關(guān)資料,對(duì)于 elasticsearch 增量寫(xiě)入,但經(jīng)常jdbc源一端的數(shù)據(jù)庫(kù)可能會(huì)做數(shù)據(jù)庫(kù)刪除或者更新操作,這里提供解決辦法,需要的朋友可以參考下2017-08-08
MySQL查看和修改時(shí)區(qū)的實(shí)現(xiàn)方法
本文主要介紹了MySQL查看和修改時(shí)區(qū),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08
淺談sql語(yǔ)句中GROUP BY 和 HAVING的使用方法
GROUP BY語(yǔ)句和HAVING語(yǔ)句,經(jīng)過(guò)研究和練習(xí),終于明白如何使用了,在此記錄一下同時(shí)添加了一個(gè)自己舉的小例子,通過(guò)寫(xiě)這篇文章來(lái)加深下自己學(xué)習(xí)的效果,還能和大家分享下,同時(shí)也方便以后查閱,一舉多得,下面由小編來(lái)和大家一起學(xué)習(xí)2019-05-05
Mysql8.4.3LTS中離線部署的實(shí)現(xiàn)示例
本文詳細(xì)介紹了在Ubuntu 24.04系統(tǒng)上離線部署MySQL 8.4.3 LTS,包括環(huán)境配置、安裝步驟等步驟,對(duì)小白有一定的幫助,感興趣的可以了解一下2024-11-11
mysql 動(dòng)態(tài)執(zhí)行存儲(chǔ)過(guò)程語(yǔ)句
MSSQL中動(dòng)態(tài)執(zhí)行sql語(yǔ)句可以使用EXEC()函數(shù)。MSSQL中也有類(lèi)似的函數(shù)EXECUTE(),不過(guò)不同的是MYSQL中動(dòng)態(tài)執(zhí)行存儲(chǔ)過(guò)程語(yǔ)句與MSSQL還是有區(qū)別的。2009-07-07

