MySQL中int(10)和int(11)的區(qū)別詳解
一、背景
在創(chuàng)建數(shù)據(jù)庫表的時(shí)候,我們經(jīng)常會(huì)用到int(x)來定義一個(gè)字段的類型,一直誤以為這里的x表示存儲(chǔ)數(shù)字的長度。
其實(shí)大錯(cuò)特錯(cuò),這里的 x 指的是 最大顯示寬度(最大有效顯示寬度是255),且顯示寬度與存儲(chǔ)大小或類型包含的值的范圍無關(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)鍵字后面的括號內(nèi)指定整數(shù)值的顯示寬度(例如,INT(4))。
該可選顯示寬度規(guī)定用于顯示寬度小于指定的列寬度的值時(shí)從左側(cè)填滿寬度。顯示寬度并不限制可以在列內(nèi)保存的值的范圍,也不限制超過列的指定寬度的值的顯示。
當(dāng)結(jié)合可選擴(kuò)展屬性 zerofill 使用時(shí), 默認(rèn)補(bǔ)充的空格用零代替。
例如,對于聲明為 INT(5) zerofill 的列,值 4 檢索為 00004。請注意如果在整數(shù)列保存超過顯示寬度的一個(gè)值,當(dāng) MySQL 為復(fù)雜聯(lián)接生成臨時(shí)表時(shí)會(huì)遇到問題,因?yàn)樵谶@些情況下 MySQL 相信數(shù)據(jù)適合原列寬度。
所有整數(shù)類型可以有一個(gè)可選(非標(biāo)準(zhǔn))屬性 UNSIGNED。當(dāng)你想要在列內(nèi)只允許非負(fù)數(shù)和該列需要較大的上限數(shù)值范圍時(shí)可以使用無符號值。
那取值范圍和顯示寬度到底有什么關(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ù)類型的取值范圍是無關(guān)的。
顯示寬度只是指明 mysql 最大可能顯示的數(shù)字個(gè)數(shù),數(shù)值的位數(shù)小于指定的寬度時(shí)左側(cè)用數(shù)字 0 填充。
如果插入了大于顯示寬度的值,只要該值不超過該類型整數(shù)的取值范圍,數(shù)值依然可以插入,而且能夠顯示出來。
到此這篇關(guān)于MySQL中int(10)和int(11)的區(qū)別詳解的文章就介紹到這了,更多相關(guān)MySQL int(10)和int(11)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Mybatis多表查詢與動(dòng)態(tài)SQL特性詳解
動(dòng)態(tài)SQL可以省略很多拼接SQL的步驟,使用類似于JSTL方式,下面這篇文章主要給大家介紹了關(guān)于Mybatis多表查詢與動(dòng)態(tài)SQL特性的相關(guān)資料,文字通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
mysql 8.0 錯(cuò)誤The server requested authentication method unkno
在本篇文章里小編給大家整理的是關(guān)于mysql 8.0 錯(cuò)誤The server requested authentication method unknown to the client解決方法,有此需要的朋友們可以學(xué)習(xí)下。2019-08-08
MySQL?數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的實(shí)現(xiàn)
數(shù)據(jù)恢復(fù)的過程包括將備份文件導(dǎo)入到數(shù)據(jù)庫中、重建索引、應(yīng)用日志等,本文主要介紹了MySQL數(shù)據(jù)備份和數(shù)據(jù)恢復(fù)的實(shí)現(xiàn),感興趣的可以了解一下2023-08-08
使用Python的Django框架中的壓縮組件Django Compressor
這篇文章主要介紹了使用Python的Django框架中的壓縮組件Django Compressor,這個(gè)工具主要用于實(shí)現(xiàn)js/css的壓縮,需要的朋友可以參考下2015-05-05
線上MYSQL同步報(bào)錯(cuò)故障處理方法總結(jié)(必看篇)
下面小編就為大家?guī)硪黄€上MYSQL同步報(bào)錯(cuò)故障處理方法總結(jié)(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-03-03

