1. bytes
bytes = 8 bit
一個字節(jié)最多可以代表的數(shù)據(jù)長度是2的8次方 11111111 在計算機中也就是-128到127。
2. BIT
BIT #位字段類型
BIT[M] 位字段類型,M表示每個值的位數(shù),范圍從1到64,如果M被忽略,默認為1
3.TINYINT
TINYINT[(M)] [UNSIGNED] [ZEROFILL] M默認為4 #很小的整數(shù)。
帶符號的范圍是-128到127。無符號的范圍是0到255。
4. BOOL, BOOLEAN
BOOL,BOOLEAN #TINYINT(1)的同義詞。
zero值被視為假。非zero值視為真。
5. SMALLINT
SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認為6 #小的整數(shù)。
帶符號的范圍是-32768到32767。無符號的范圍是0到65535。
6. MEDIUMINT
MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認為9 #中等大小的整數(shù)。
帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215。
7. INT
INT[(M)] [UNSIGNED] [ZEROFILL] M默認為11 #普通大小的整數(shù)。
帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295。
8. BIGINT
BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認為20 #大整數(shù)。
帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615。
注意:這里的M代表的并不是存儲在數(shù)據(jù)庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數(shù)字,int(11)就會存儲11個長度的數(shù)字,這是大錯特錯的。
其實當(dāng)我們在選擇使用int的類型的時候,不論是int(3)還是int(11),它在數(shù)據(jù)庫里面存儲的都是4個字節(jié)的長度,在使用int(3)的時候如果你輸入的是10,會默認給你存儲位010,也就是說這個3代表的是默認的一個長度,當(dāng)你不足3位時,會幫你不全,當(dāng)你超過3位時,就沒有任何的影響。
前天有人問我 int(10)與int(11)有什么區(qū)別,當(dāng)時覺得就是長度的區(qū)別吧,現(xiàn)在看,他們之間除了在存儲的時候稍微有點區(qū)別外,在我們使用的時候是沒有任何區(qū)別的。int(10)也可以代表2147483647這個值int(11)也可以代表。
要查看出不同效果記得在創(chuàng)建類型的時候加 zerofill這個值,表示用0填充,否則看不出效果的。
我們通常在創(chuàng)建數(shù)據(jù)庫的時候都不會加入這個選項,所以可以說他們之間是沒有區(qū)別的。