mysql中int(3)和int(10)的數(shù)值范圍是否相同
提問(wèn):
mysql的字段,unsigned int(3), 和unsinged int(6), 能存儲(chǔ)的數(shù)值范圍是否相同。如果不同,分別是多大?
回答:
不同,int(3)最多顯示3位無(wú)符號(hào)整體,int(6)最多顯示6位無(wú)符號(hào)數(shù)。
如果你的答案和上面的一致,恭喜你和我犯了一樣的錯(cuò)誤。
真實(shí)情況:
int類(lèi)型整數(shù)占4個(gè)字節(jié),有符號(hào)的范圍為:-2^31 ~ 2^31-1,無(wú)符號(hào)整數(shù)范圍為:0 ~ 2^32-1,既然都是無(wú)符號(hào)整數(shù),那么存儲(chǔ)范圍是一樣的,int(6)只是在數(shù)字不夠6位時(shí)用0補(bǔ)全,如果超過(guò)6位,則不需要補(bǔ)全。
我們建立下面這張表:
drop table if exists test; CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `a` int(11) NOT NULL, `b` int(11) unsigned zerofill NOT NULL, `c` int(5) DEFAULT NULL, `d` int(5) unsigned zerofill NOT NULL, `e` int(15) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
插入一些數(shù)據(jù)后,用cmd命令行查看:
mysql> select * from test; +----+------------+-------------+------------+------------+------------+ | id | a | b | c | d | e | +----+------------+-------------+------------+------------+------------+ | 1 | 1 | 00000000001 | 1 | 00001 | 1 | | 2 | 1234567890 | 01234567890 | 1234567890 | 1234567890 | 1234567890 | +----+------------+-------------+------------+------------+------------+
發(fā)現(xiàn),無(wú)論是int(3), int(6), 都可以顯示6位以上的整數(shù)。但是,當(dāng)數(shù)字不足3位或6位時(shí),前面會(huì)用0補(bǔ)齊。
注意:如果你是用類(lèi)似navicat這種工具看,不會(huì)補(bǔ)充0,可能做了處理,需要用mysql cmd命令行才能看到這種效果。
查下手冊(cè),解釋是這樣的:
MySQL還支持選擇在該類(lèi)型關(guān)鍵字后面的括號(hào)內(nèi)指定整數(shù)值的顯示寬度(例如,INT(4))。該可選顯示寬度規(guī)定用于顯示寬度小于指定的列寬度的值時(shí)從左側(cè)填滿寬度。顯示寬度并不限制可以在列內(nèi)保存的值的范圍,也不限制超過(guò)列的指定寬度的值的顯示。
也就是說(shuō),int的長(zhǎng)度并不影響數(shù)據(jù)的存儲(chǔ)精度,長(zhǎng)度只和顯示有關(guān),為了讓大家看的更清楚,我們?cè)谏厦胬拥慕ū碚Z(yǔ)句中,使用了zerofill。
知識(shí)點(diǎn)
int(M) 中的M指示最大顯示寬度,最大有效顯示寬度是 255,且顯示寬度與存儲(chǔ)大小或類(lèi)型包含的值的范圍無(wú)關(guān)。
首先說(shuō)一下 MySQL 的數(shù)值類(lèi)型,MySQL 支持所有標(biāo)準(zhǔn) SQL 數(shù)值數(shù)據(jù)類(lèi)型。這些類(lèi)型包括嚴(yán)格數(shù)值數(shù)據(jù)類(lèi)型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似數(shù)值數(shù)據(jù)類(lèi)型(FLOAT、REAL 和 DOUBLE PRECISION)。關(guān)鍵字 INT 是 INTEGER 的同義詞,關(guān)鍵字 DEC 是DECIMAL 的同義詞。
BIT 數(shù)據(jù)類(lèi)型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。 作為 SQL 標(biāo)準(zhǔn)的擴(kuò)展,MySQL 也支持整數(shù)類(lèi)型TINYINT、MEDIUMINT 和 BIGINT。下面的表顯示了需要的每個(gè)整數(shù)類(lèi)型的存儲(chǔ)和范圍。
結(jié)論:
無(wú)論是unsigned int(3)或 unsiend int(6),存儲(chǔ)的都是4字節(jié)無(wú)符號(hào)整數(shù), 也就是0~2^32。
總結(jié)
到此這篇關(guān)于mysql中int(3)和int(10)的數(shù)值范圍是否相同的文章就介紹到這了,更多相關(guān)mysql int(3)和int(10)數(shù)值范圍內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
用命令創(chuàng)建MySQL數(shù)據(jù)庫(kù)(de1)的方法
下面小編就為大家?guī)?lái)一篇用命令創(chuàng)建MySQL數(shù)據(jù)庫(kù)(de1)的方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03Mysql存儲(chǔ)json格式的實(shí)現(xiàn)
本文主要介紹了Mysql存儲(chǔ)json格式的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06簡(jiǎn)單談?wù)凪ySQL數(shù)據(jù)透視表
這篇文章主要介紹了簡(jiǎn)單談?wù)凪ySQL數(shù)據(jù)透視表的相關(guān)資料,需要的朋友可以參考下2019-08-08修改mysql5.5默認(rèn)編碼(圖文步驟修改為utf-8編碼)
安裝mysql后,啟動(dòng)服務(wù)并登陸,使用show variables命令可查看mysql數(shù)據(jù)庫(kù)的默認(rèn)編碼;mysql數(shù)據(jù)庫(kù)的默認(rèn)編碼并不是utf-8如何修改呢,本文將詳細(xì)介紹,感興趣的朋友可以了解下2013-01-01深入mysql存儲(chǔ)過(guò)程中表名使用參數(shù)傳入的詳解
本篇文章是對(duì)mysql存儲(chǔ)過(guò)程中表名使用參數(shù)傳入進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06