所以int(10)與int(11)後的括號中的字元表示顯示寬度,整數列的顯示寬度與mysql需要用多少個字元來顯示該列數值,與該整數需要的儲存空間的大小都沒有關係,int型別的字段能儲存的資料上限還是2147483647(有符號型)和4294967295(無符號型)。
1 bytes = 8 bit ,乙個位元組最多可以代表的資料長度是2的8次方 11111111 在計算機中也就是-128到127
1.bit[m]位欄位型別,m表示每個值的位數,範圍從1到64,如果m被忽略,預設為1
2.tinyint[(m)] [unsigned] [zerofill] m預設為4很小的整數。帶符號的範圍是-128到127。無符號的範圍是0到255。
3. bool,boolean是tinyint(1)的同義詞。zero值被視為假。非zero值視為真。
4.smallint[(m)] [unsigned] [zerofill] m預設為6 小的整數。帶符號的範圍是-32768到32767。無符號的範圍是0到65535。
5.mediumint[(m)] [unsigned] [zerofill] m預設為9 中等大小的整數。帶符號的範圍是-8388608到8388607。無符號的範圍是0到16777215。
6. int[(m)] [unsigned] [zerofill] m預設為11
普通大小的整數。帶符號的範圍是-2147483648到2147483647。無符號的範圍是0到4294967295。
7.bigint[(m)] [unsigned] [zerofill] m預設為20
大整數。帶符號的範圍是-9223372036854775808到9223372036854775807。無符號的範圍是0到18446744073709551615。
注意:這裡的m代表的並不是儲存在資料庫中的具體的長度,以前總是會誤以為int(3)只能儲存3個長度的數字,int(11)就會儲存11個長度的數字,這是大錯特錯的。
使用int的型別的時候,不論是int(3)還是int(11)在資料庫裡面儲存的都是4個位元組的長度,在使用int(3)的時候如果你輸入的是10,會預設給你儲存位010,也就是說這個3代表的是預設的乙個長度,當你不足3位時,會幫你不全,當你超過3位時,就沒有任何的影響。因此儲存的時候稍微有點區別外,使用的時候是沒有任何區別的
要檢視出不同效果記得在建立型別的時候加 zerofill這個值,表示用0填充,否則看不出效果的。
(我們通常在建立資料庫的時候都不會加入這個選項,所以可以說他們之間是沒有區別的)
下面的表顯示了需要的每個整數型別的儲存和範圍。
型別位元組最小值最大值
(帶符號的/無符號的)(帶符號的/無符號的)
tinyint
1-128
1270
255smallint
2-32768
32767
065535
mediumint
3-8388608
8388607
016777215
int4
-2147483648
2147483647
04294967295
bigint
8-9223372036854775808
9223372036854775807
018446744073709551615
參考:
MySQL中int m 的含義
int 3 int 4 int 8 在磁碟上都是占用 4 btyes 的儲存空間。說白了,除了顯示給使用者的方式有點不同外,int m 跟 int 資料型別是相同的。mysql drop table if exists t mysql create table t id int zerofill m...
Mysql的int(1)和int(M)的區別
mysql中我們建表的時候,型別可以用int 10 這是什麼意思呢?首先我們看 mysql的整型型別有這樣幾種 型別占用位元組 tinyint 1smallint 2mediumint 3int 4bigint 8這是決定儲存需要占用多少位元組,那麼後邊的數字 m 代表什麼意思呢?tinyint m...
MySQL中的int 11 含義
圖中的資料剛好展示了3位,和我們的int 3 中的3符合。alter table account change id id int 5 zerofill 圖中資料展示了5位,和int n 中n的值的位數是一樣的 答案是 依然會展示插入的資料,不會丟失資料 我們知道mysql中的int是佔4個位元組,...