MySQL中 int(11)和int(10)有沒有區別!!


結論:int(11)  int(3)  int(20)  若不勾選填充0,那么效果統統一樣,若勾選了填充0;查詢出來的效果 會是這樣:

int(11)  00000000123

int(3)  123

int(20) 00000000000000000123

僅僅是顯示出來的效果不同,存儲的方式都是一樣,且這個填充0經常用不到。通常默認 int(11) 就可。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

來自:https://blog.csdn.net/ZBylant/article/details/86572567

引言
依稀還記得有次面試,有面試官問我int(10)與int(11)有什么區別,當時覺得就是長度的區別吧!面試官最后也沒有給反饋,我也就以為自己答對了。直到有一次有個同學又跟我談起這個事,才去查了以下,發現事情並沒有哪么簡單… …

最后查出的結果是:這里的M代表的並不是存儲在數據庫中的具體的長度,以前總是會誤以為int(3)只能存儲 3個長度的數字,int(11)就會存儲 11 個長度的數字,這是大錯特錯的。

int(10)也可以代表 2147483647 這個值int(11)也可以代表。

要查看出不同效果記得在創建類型的時候加 zerofill這個值,表示用 0 填充,否則看不出效果的。

我們通常在創建數據庫的時候都不會加入這個選項,所以可以說他們之間是沒有區別的。

聲明字段是int類型的那一刻起,int就是占四個字節,一個字節 8 位,也就是4*8=32,可以表示的數字個數是 2的 32 次方(2^32 = 4 294 967 296個數字)。

4 294 967 296個數字也就是0~4 294 967 295,當然如果區分正負號的話所存的數字會比較小。

 

知識點
int(M) 中的M指示最大顯示寬度,最大有效顯示寬度是 255,且顯示寬度與存儲大小或類型包含的值的范圍無關。

首先說一下 MySQL 的數值類型,MySQL 支持所有標准 SQL 數值數據類型。這些類型包括嚴格數值數據類型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似數值數據類型(FLOAT、REAL 和 DOUBLE PRECISION)。關鍵字 INT 是 INTEGER 的同義詞,關鍵字 DEC 是DECIMAL 的同義詞。

BIT 數據類型保存位字段值,並且支持 MyISAM、MEMORY、InnoDB 和 BDB表。 作為 SQL 標准的擴展,MySQL 也支持整數類型TINYINT、MEDIUMINT 和 BIGINT。下面的表顯示了需要的每個整數類型的存儲和范圍。

 

MySQL 類型關鍵字后面的括號內指定整數值的顯示寬度(例如,INT(4))。該可選顯示寬度規定用於顯示寬度小於指定的列寬度的值時從左側填滿寬度。顯示寬度並不限制可以在列內保存的值的范圍,也不限制超過列的指定寬度的值的顯示。

當結合可選擴展屬性 ZEROFILL 使用時, 默認補充的空格用零代替。例如,對於聲明為 INT(5) ZEROFILL 的列,值 4 檢索為 00004。請注意如果在整數列保存超過顯示寬度的一個值,當 MySQL 為復雜聯接生成臨時表時會遇到問題,因為在這些情況下 MySQL 相信數據適合原列寬度。

所有整數類型可以有一個可選(非標准)屬性 UNSIGNED。當你想要在列內只允許非負數和該列需要較大的上限數值范圍時可以使用無符號值。

總結
所以,int(2) 與int(11)后的括號中的字符表示顯示寬度,整數列的顯示寬度與 MySQL 需要用多少個字符來顯示該列數值,與該整數需要的存儲空間的大小都沒有關系,int類型的字段能存儲的數據上限依舊是2147483647(有符號型)和4294967295(無符號型)。



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM