新聞中心
MySQL int 類型的長(zhǎng)度和范圍解惑
Mysql 建表過(guò)程中:
創(chuàng)新互聯(lián)主營(yíng)固始網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,重慶APP開(kāi)發(fā)公司,固始h5小程序定制開(kāi)發(fā)搭建,固始網(wǎng)站營(yíng)銷推廣歡迎固始等地區(qū)企業(yè)咨詢
MySQL中int類型占用4個(gè)字節(jié)[byte(B)],1B有8個(gè)位[bit(b)],一個(gè)位(b)就代表一個(gè)0或者1,那么MySQL中int占用4B,對(duì)應(yīng)位就是 4*8b = 32b 了,也就是說(shuō) int 表示的數(shù)字 個(gè)數(shù) 是: 2的32次方。
因?yàn)樽止?jié)分有符號(hào)和無(wú)符號(hào)兩種,于是 int 有符號(hào) 的 范圍就是 -2的31次方 到 2的31次方減去1 [?1 為什么不是32次方?] [?2 為什么要減去1?],即 -2147483648 ~ 2147483647; int 無(wú)符號(hào)(unsigned) 的 范圍就是 0 到 2的32次方減去1。
知道了 int 類型的范圍后,我們?cè)賮?lái)看看長(zhǎng)度是什么意思。 在MySQL手冊(cè)中,字段類型的長(zhǎng)度用 “M” 表示,表示最大顯示寬度。 int 的 最大有效顯示寬度是 255。 注意: 此處表示 顯示寬度 和 存儲(chǔ)大小或類型及范圍 無(wú)關(guān)
參考:
1、
簡(jiǎn)單談?wù)凪ySQL中的int(m)
我們?cè)谠O(shè)計(jì)表的時(shí)候,如果碰到需要設(shè)置int(整型)的時(shí)候,通常會(huì)按照慣例(大家都這樣寫)設(shè)置成int(11)。那么這里為什么是11呢?代表的又是什么呢?
以前我一直以為這里是在限制int顯示的寬度,后來(lái)仔細(xì)研究和通過(guò)上網(wǎng)查詢發(fā)現(xiàn),事實(shí)并不是那樣的。
確切的來(lái)說(shuō),這里的“寬度”只是一個(gè)“預(yù)期值”,它所代表的僅僅是你在設(shè)計(jì)數(shù)據(jù)表結(jié)構(gòu)時(shí),想讓該列日后顯示的值寬度為多少,但是具體存入值的寬度多少不會(huì)受任何影響。
當(dāng)然,它的作用不僅如此,在存入數(shù)據(jù)的時(shí)候,還是有一定區(qū)別的,這一點(diǎn)可以通過(guò)設(shè)置字段的zerofill可以看出。比如這里我們創(chuàng)建一個(gè)數(shù)據(jù)表,結(jié)構(gòu)如下:
create
table
test
(
num
int(5)
zerofill
);
上面代碼創(chuàng)建一個(gè)名為test的表,結(jié)構(gòu)很簡(jiǎn)單,表中只有一個(gè)名為num的字段,類型為int,寬度為5,為了看出寬度方便,我們又添加一個(gè)zerofill屬性(該屬性會(huì)讓存入數(shù)值在不足寬度情況下,左側(cè)補(bǔ)0)
然后我們開(kāi)始插入數(shù)據(jù):
mysql
insert
into
test
values(1),(11),(123),(12345),(123456),(1234567);
Query
OK,
6
rows
affected
(0.00
sec)
Records:
6
Duplicates:
Warnings:
打印結(jié)果:
mysql
select
*
from
test;
+---------+
|
num
|
+---------+
|
00001
|
|
00011
|
|
00123
|
|
12345
|
|
123456
|
|
1234567
|
+---------+
6
rows
in
set
(0.00
sec)
由以上結(jié)果,不難看出,如果字符少于設(shè)置(期望值)寬度,在設(shè)置了zerofill屬性的情況下,左側(cè)會(huì)統(tǒng)統(tǒng)補(bǔ)0;但是如果超出則不受任何影響。也就是說(shuō)這里的int(m)中m只是一個(gè)預(yù)期值,和真實(shí)數(shù)據(jù)寬度并沒(méi)多大關(guān)系。
mysql int(3)為什么可以寫五位數(shù)
mysql int(3)可以寫五位數(shù)是后面的3決定的。例如:mysql int(M)在 int(M) 中,M 的值跟 int(M) 所占多少存儲(chǔ)空間并無(wú)任何關(guān)系。 int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲(chǔ)空間。說(shuō)白了,除了顯示給用戶的方式有點(diǎn)不同外,int(M) 跟 int 數(shù)據(jù)類型是相同的。其中M就表示最大顯示寬度。而mysql int(3)最大寬度能夠?qū)懳逦粩?shù)。int類型,占用字節(jié)數(shù)為4byte,學(xué)過(guò)計(jì)算機(jī)原理的同學(xué)應(yīng)該知道,字節(jié)(byte)并非是計(jì)算機(jī)存儲(chǔ)的最小單位,還有比字節(jié)(byte)更小的單位,也就是位(bit),一個(gè)位就代表一個(gè)0或1,8個(gè)位組成一個(gè)字節(jié),一般字節(jié)用大寫B(tài)來(lái)表示byte, 位用小寫b來(lái)表示bit。
mysql中10-3怎么寫
Mysql數(shù)據(jù)表定義中我們經(jīng)常用int(M),這個(gè)M默認(rèn)是11,我們可以寫10,或者3這個(gè)東西對(duì)于mysql存儲(chǔ)的數(shù)值沒(méi)有任何影響,mysql存儲(chǔ)的數(shù)值范圍如下所示(32位系統(tǒng)),這個(gè)定義的唯一作用,需要與zerofill配合使用,如果啟用了zerofill,就是當(dāng)數(shù)值的位數(shù)M的時(shí)候沒(méi)有任何作用,如果啟用了zerofill,程序中對(duì)查詢出的int值需要做intval處理才能正確使用,其實(shí)是一件比較坑爹的事情,所以基本沒(méi)有人這么用總結(jié)一句話就是,int(M),M其實(shí)對(duì)我們沒(méi)有任何影響,建議大家定義表結(jié)構(gòu)時(shí)忽略此值
網(wǎng)站題目:包含mysql中int怎么寫的詞條
URL地址:http://www.dlmjj.cn/article/ddodjdg.html