MySQL中int(10)和int(11)的區(qū)別詳解
一、背景
在創(chuàng)建數(shù)據(jù)庫(kù)表的時(shí)候,我們經(jīng)常會(huì)用到int(x)來(lái)定義一個(gè)字段的類型,一直誤以為這里的x表示存儲(chǔ)數(shù)字的長(zhǎng)度。
其實(shí)大錯(cuò)特錯(cuò),這里的 x 指的是 最大顯示寬度(最大有效顯示寬度是255),且顯示寬度與存儲(chǔ)大小或類型包含的值的范圍無(wú)關(guān)。
二、MySQL整數(shù)類型
類型 | 字節(jié) | 取值范圍 | 顯示寬度 |
---|---|---|---|
tinyint | 1 | -128 ~ 127 | 4 |
smallint | 2 | -32768 ~ 32767 | 6 |
mediumint | 3 | -8388608 ~ 8388607 | 9 |
int | 4 | -2147483648 ~ 2147483647 | 11 |
bigint | 8 | -9223372036854775808 ~ 9223372036854775807 | 20 |
MySQL 類型關(guān)鍵字后面的括號(hào)內(nèi)指定整數(shù)值的顯示寬度(例如,INT(4))。
該可選顯示寬度規(guī)定用于顯示寬度小于指定的列寬度的值時(shí)從左側(cè)填滿寬度。顯示寬度并不限制可以在列內(nèi)保存的值的范圍,也不限制超過(guò)列的指定寬度的值的顯示。
當(dāng)結(jié)合可選擴(kuò)展屬性 zerofill 使用時(shí), 默認(rèn)補(bǔ)充的空格用零代替。
例如,對(duì)于聲明為 INT(5) zerofill 的列,值 4 檢索為 00004。請(qǐng)注意如果在整數(shù)列保存超過(guò)顯示寬度的一個(gè)值,當(dāng) MySQL 為復(fù)雜聯(lián)接生成臨時(shí)表時(shí)會(huì)遇到問(wèn)題,因?yàn)樵谶@些情況下 MySQL 相信數(shù)據(jù)適合原列寬度。
所有整數(shù)類型可以有一個(gè)可選(非標(biāo)準(zhǔn))屬性 UNSIGNED。當(dāng)你想要在列內(nèi)只允許非負(fù)數(shù)和該列需要較大的上限數(shù)值范圍時(shí)可以使用無(wú)符號(hào)值。
那取值范圍和顯示寬度到底有什么關(guān)系呢?利用 int 做了個(gè)實(shí)驗(yàn):
create table int_demo( ? ? id int not null auto_increment, ? ? int_4 int(4) UNSIGNED zerofill, ? ? int_8 int(8) UNSIGNED zerofill, ? ? primary key (id) ); insert into int_demo (int_4, int_8) VALUES (2, 1000),(123456, 1234567898); select * from int_demo;
查詢結(jié)果:
mysql> select * from int_demo; +----+--------+------------+ | id | int_4 ?| int_8 ? ? ?| +----+--------+------------+ | ?1 | ? 0002 | ? 00001000 | | ?3 | 123456 | 1234567898 | +----+--------+------------+ 2 rows in set (0.00 sec)
總結(jié):
顯示寬度整數(shù)類型的取值范圍是無(wú)關(guān)的。
顯示寬度只是指明 mysql 最大可能顯示的數(shù)字個(gè)數(shù),數(shù)值的位數(shù)小于指定的寬度時(shí)左側(cè)用數(shù)字 0 填充。
如果插入了大于顯示寬度的值,只要該值不超過(guò)該類型整數(shù)的取值范圍,數(shù)值依然可以插入,而且能夠顯示出來(lái)。
到此這篇關(guān)于MySQL中int(10)和int(11)的區(qū)別詳解的文章就介紹到這了,更多相關(guān)MySQL int(10)和int(11)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mysql/Java服務(wù)端對(duì)emoji的支持與問(wèn)題解決方法詳解
這篇文章主要介紹了mysql/Java服務(wù)端對(duì)emoji的支持與問(wèn)題解決方法,結(jié)合實(shí)例形式分析了mysql/Java服務(wù)端對(duì)emoji字符集存儲(chǔ)及支持問(wèn)題解決方法,需要的朋友可以參考下2019-10-10MySQL使用外鍵實(shí)現(xiàn)級(jí)聯(lián)刪除與更新的方法
這篇文章主要介紹了MySQL使用外鍵實(shí)現(xiàn)級(jí)聯(lián)刪除與更新的方法,詳細(xì)分析了mysql數(shù)據(jù)庫(kù)與表的創(chuàng)建、數(shù)據(jù)插入、查詢以及外鏈的使用與級(jí)聯(lián)操作相關(guān)技巧,需要的朋友可以參考下2016-07-07MySQL中is?null和=null的區(qū)別及說(shuō)明
這篇文章主要介紹了MySQL中is?null和=null的區(qū)別及說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07手把手帶你徹底卸載MySQL數(shù)據(jù)庫(kù)
相信大家都因?yàn)楦鞣N各樣的原因可能需要卸載MySQL或者卸載重裝,但是如果MySQL不能清理干凈的話是很容易出現(xiàn)問(wèn)題的,這篇文章主要給大家介紹了關(guān)于如何徹底卸載MySQL數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2022-06-06MYSQL數(shù)據(jù)庫(kù)連接池及常見(jiàn)參數(shù)調(diào)優(yōu)方式
這篇文章主要介紹了MYSQL數(shù)據(jù)庫(kù)連接池及常見(jiàn)參數(shù)調(diào)優(yōu)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06MySQL中臨時(shí)表的基本創(chuàng)建與使用教程
這篇文章主要介紹了MySQL中臨時(shí)表的基本創(chuàng)建與使用教程,注意臨時(shí)表中數(shù)據(jù)的清空問(wèn)題,需要的朋友可以參考下2015-12-12MySQL8.x登陸root用戶突然提示mysql_native_password的實(shí)現(xiàn)
本文主要介紹了MySQL 8.x登陸root用戶突然提示mysql_native_password,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08