五月综合缴情婷婷六月,色94色欧美sute亚洲线路二,日韩制服国产精品一区,色噜噜一区二区三区,香港三级午夜理伦三级三

您現(xiàn)在的位置: 365建站網(wǎng) > 365文章 > mysql中int、bigint、smallint 和 tinyint長(zhǎng)度范圍和區(qū)別

mysql中int、bigint、smallint 和 tinyint長(zhǎng)度范圍和區(qū)別

文章來源:365jz.com     點(diǎn)擊數(shù):9979    更新時(shí)間:2018-10-31 08:40   參與評(píng)論

最近使用mysql數(shù)據(jù)庫的時(shí)候遇到了多種數(shù)字的類型,主要有int,bigint,smallint和tinyint。其中比較迷惑的是int和smallint的差別。今天就在網(wǎng)上仔細(xì)找了找,找到如下內(nèi)容,留檔做個(gè)總結(jié):

使用整數(shù)數(shù)據(jù)的精確數(shù)字?jǐn)?shù)據(jù)類型。

bigint

從 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型數(shù)據(jù)(所有數(shù)字)。存儲(chǔ)大小為 8 個(gè)字節(jié)。

P.S. bigint已經(jīng)有長(zhǎng)度了,在mysql建表中的length,只是用于顯示的位數(shù)


int

從 -2^31 (-2,147,483,648) 到 2^31 – 1 (2,147,483,647) 的整型數(shù)據(jù)(所有數(shù)字)。存儲(chǔ)大小為 4 個(gè)字節(jié)。int 的 SQL-92 同義字為 integer。

smallint

從 -2^15 (-32,768) 到 2^15 – 1 (32,767) 的整型數(shù)據(jù)。存儲(chǔ)大小為 2 個(gè)字節(jié)。

tinyint

從 0 到 255 的整型數(shù)據(jù)。存儲(chǔ)大小為 1 字節(jié)。

注釋

在支持整數(shù)值的地方支持 bigint 數(shù)據(jù)類型。但是,bigint 用于某些特殊的情況,當(dāng)整數(shù)值超過 int 數(shù)據(jù)類型支持的范圍時(shí),就可以采用 bigint。在 SQL Server 中,int 數(shù)據(jù)類型是主要的整數(shù)數(shù)據(jù)類型。

在數(shù)據(jù)類型優(yōu)先次序表中,bigint 位于 smallmoney 和 int 之間。

只有當(dāng)參數(shù)表達(dá)式是 bigint 數(shù)據(jù)類型時(shí),函數(shù)才返回 bigint。SQL Server 不會(huì)自動(dòng)將其它整數(shù)數(shù)據(jù)類型(tinyint、smallint 和 int)提升為 bigint

int(M) 在 integer 數(shù)據(jù)類型中,M 表示最大顯示寬度。在 int(M) 中,M 的值跟 int(M) 所占多少存儲(chǔ)空間并無任何關(guān)系。和數(shù)字位數(shù)也無關(guān)系 int(3)、int(4)、int(8) 在磁盤上都是占用 4 btyes 的存儲(chǔ)空間。

在MySQL的數(shù)據(jù)類型中,Tinyint的取值范圍是:帶符號(hào)的范圍是-128到127。

Tinyint占用1字節(jié)的存儲(chǔ)空間,即8位(bit)。那么Tinyint的取值范圍怎么來的呢?我們先看無符號(hào)的情況。無符號(hào)的最小值即全部8位(bit)都為0,換算成十進(jìn)制就是0,所以無符號(hào)的Tinyint的最小值為0.無符號(hào)的最大值即全部8bit都為1,11111111,換算成十進(jìn)制就是255.這很好理解。

有符號(hào)的Tinyint的取值范圍是怎么來的呢?在計(jì)算機(jī)中,用最高位表示符號(hào)。0表示正,1表示負(fù),剩下的表示數(shù)值。那么有符號(hào)的8bit的最小值就是

  1  1  1  1  1  1  1  1=-127

表示負(fù)值

最大值:

  0  1  1  1  1  1  1  1=+127

表示正值

怎么有符號(hào)的最小值是-127,而不是-128呢?這就是本文要說的關(guān)鍵地方了,在計(jì)算機(jī)中,表示負(fù)值是用補(bǔ)碼

為什么有符號(hào)的TINYINT的最小值是-128?雖然“-0”也是“0”,但根據(jù)正、反、補(bǔ)碼體系,“-0”的補(bǔ)碼和“+0”是不同的,這樣就出現(xiàn)兩個(gè)補(bǔ)碼代表一個(gè)數(shù)值的情況。為了將補(bǔ)碼與數(shù)字一一對(duì)應(yīng),所以人為規(guī)定“0”一律用“+0”代表。同時(shí)為了充分利用資源,就將原來本應(yīng)該表示“-0”的補(bǔ)碼規(guī)定為代表-128

1 bytes = 8 bit ,一個(gè)字節(jié)最多可以代表的數(shù)據(jù)長(zhǎng)度是2的8次方 11111111 在計(jì)算機(jī)中也就是

-128到127

1.BIT[M]

位字段類型,M表示每個(gè)值的位數(shù),范圍從1到64,如果M被忽略,默認(rèn)為1

2.TINYINT[(M)] [UNSIGNED] [ZEROFILL]  M默認(rèn)為4

很小的整數(shù)。帶符號(hào)的范圍是-128到127。無符號(hào)的范圍是0到255。

3. BOOL,BOOLEAN

是TINYINT(1)的同義詞。zero值被視為假。非zero值視為真。

4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為6

小的整數(shù)。帶符號(hào)的范圍是-32768到32767。無符號(hào)的范圍是0到65535。

5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為9

中等大小的整數(shù)。帶符號(hào)的范圍是-8388608到8388607。無符號(hào)的范圍是0到16777215。

6. INT[(M)] [UNSIGNED] [ZEROFILL]   M默認(rèn)為11

普通大小的整數(shù)。帶符號(hào)的范圍是-2147483648到2147483647。無符號(hào)的范圍是0到4294967295。

7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為20

大整數(shù)。帶符號(hào)的范圍是-9223372036854775808到9223372036854775807。無符號(hào)的范圍是0到18446744073709551615。

注意:這里的M代表的并不是存儲(chǔ)在數(shù)據(jù)庫中的具體的長(zhǎng)度,以前總是會(huì)誤以為int(3)只能存儲(chǔ)3個(gè)長(zhǎng)度的數(shù)字,int(11)就會(huì)存儲(chǔ)11個(gè)長(zhǎng)度的數(shù)字,這是大錯(cuò)特錯(cuò)的。

tinyint(1) 和 tinyint(4) 中的1和4并不表示存儲(chǔ)長(zhǎng)度,只有字段指定zerofill是有用,
如tinyint(4),如果實(shí)際值是2,如果列指定了zerofill,查詢結(jié)果就是0002,左邊用0來填充。

 

---------------------

char是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型,它們的區(qū)別是:

  char(M)類型的數(shù)據(jù)列里,每個(gè)值都占用M個(gè)字節(jié),如果某個(gè)長(zhǎng)度小于M,MySQL就會(huì)在它的右邊用空格字符補(bǔ)足.

(在檢索操作中那些填補(bǔ)出來的空格字符將被去掉)

在varchar(M)類型的數(shù)據(jù)列里,每個(gè)值只占用剛好夠用的字節(jié)再加上一個(gè)用來記錄其長(zhǎng)度的字節(jié)(即總長(zhǎng)度為L(zhǎng)+1字節(jié)).

 

在MySQL中用來判斷是否需要進(jìn)行對(duì)據(jù)列類型轉(zhuǎn)換的規(guī)則

  1、在一個(gè)數(shù)據(jù)表里,如果每一個(gè)數(shù)據(jù)列的長(zhǎng)度都是固定的,那么每一個(gè)數(shù)據(jù)行的長(zhǎng)度也將是固定的.

  2、只要數(shù)據(jù)表里有一個(gè)數(shù)據(jù)列的長(zhǎng)度的可變的,那么各數(shù)據(jù)行的長(zhǎng)度都是可變的.

  3、如果某個(gè)數(shù)據(jù)表里的數(shù)據(jù)行的長(zhǎng)度是可變的,那么,為了節(jié)約存儲(chǔ)空間,MySQL會(huì)把這個(gè)數(shù)據(jù)表里的固定長(zhǎng)度類型的數(shù)據(jù)列轉(zhuǎn)換為相應(yīng)的可變長(zhǎng)度類型.

例外:長(zhǎng)度小于4個(gè)字符的char數(shù)據(jù)列不會(huì)被轉(zhuǎn)換為varchar類型


如對(duì)本文有疑問,請(qǐng)?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會(huì)為你解答?。?點(diǎn)擊進(jìn)入論壇

發(fā)表評(píng)論 (9979人查看,0條評(píng)論)
請(qǐng)自覺遵守互聯(lián)網(wǎng)相關(guān)的政策法規(guī),嚴(yán)禁發(fā)布色情、暴力、反動(dòng)的言論。
昵稱:
最新評(píng)論
------分隔線----------------------------

其它欄目

· 建站教程
· 365學(xué)習(xí)

業(yè)務(wù)咨詢

· 技術(shù)支持
· 服務(wù)時(shí)間:9:00-18:00
365建站網(wǎng)二維碼

Powered by 365建站網(wǎng) RSS地圖 HTML地圖

copyright © 2013-2024 版權(quán)所有 鄂ICP備17013400號(hào)