mysql中int、bigint、smallint 和 tinyint的區(qū)別詳細(xì)介紹

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。無(wú)符號(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。無(wú)符號(hào)的范圍是0到65535。
5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為9
中等大小的整數(shù)。帶符號(hào)的范圍是-8388608到8388607。無(wú)符號(hào)的范圍是0到16777215。
6. INT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為11
普通大小的整數(shù)。帶符號(hào)的范圍是-2147483648到2147483647。無(wú)符號(hào)的范圍是0到4294967295。
7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認(rèn)為20
大整數(shù)。帶符號(hào)的范圍是-9223372036854775808到9223372036854775807。無(wú)符號(hào)的范圍是0到18446744073709551615。
注意:這里的M代表的并不是存儲(chǔ)在數(shù)據(jù)庫(kù)中的具體的長(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來(lái)填充。
---------------------
char是一種固定長(zhǎng)度的類型,varchar則是一種可變長(zhǎng)度的類型,它們的區(qū)別是:
char(M)類型的數(shù)據(jù)列里,每個(gè)值都占用M個(gè)字節(jié),如果某個(gè)長(zhǎng)度小于M,MySQL就會(huì)在它的右邊用空格字符補(bǔ)足.
(在檢索操作中那些填補(bǔ)出來(lái)的空格字符將被去掉)
在varchar(M)類型的數(shù)據(jù)列里,每個(gè)值只占用剛好夠用的字節(jié)再加上一個(gè)用來(lái)記錄其長(zhǎng)度的字節(jié)(即總長(zhǎng)度為L(zhǎng)+1字節(jié)).
在MySQL中用來(lái)判斷是否需要進(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類型
轉(zhuǎn)自:http://www.jb51.net/article/31946.htm
浙公網(wǎng)安備 33010602011771號(hào)