Mysql中int M 的含義

2021-07-15 16:53:01 字數 1802 閱讀 8237

所以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個位元組,...