mysql int(m)與int(m)的區別,mysqlint區別

來源:互聯網
上載者:User

mysql int(m)與int(m)的區別,mysqlint區別

估計大多數開始接觸mysql的朋友們都會有這個問題:int(M) 裡面的數值到底是什麼意思?


根據相關資料總結了下:

int(M) zerofill,加上zerofill後M才表現出有點點效果,比如 int(3) zerofill,你插入到資料庫裡的是10,則實際插入為010,也就是在前面補充加了一個0.如果int(3)和int(10)不加zerofill,則它們沒有什麼區別.M不是用來限制int個數的.int(M)的最大值和最小值與undesigned有關,最下面那副圖有說明.

mysql> create table table_one (t int(3) zerofill);
Query OK, 0 rows affected (0.00 sec)

mysql> insert into table_one set t = 8;
Query OK, 1 row affected (0.00 sec)

mysql> select * from table_one ;
+——+
| t |
+——+
| 008 |
+——+
1 row in set (0.11 sec)

Zerofill with default width, the same as int(10):

mysql> create table table_two (t int zerofill);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into table_two  set t = 10;
Query OK, 1 row affected (0.02 sec)

mysql> select * from t;
+————+
| t |
+————+
| 0000000010 |
+————+
1 row in set (0.08 sec)

Without zerofill:

mysql> create table table_3 (t int);
Query OK, 0 rows affected (0.01 sec)

mysql> insert into table_3 set t = 10;
Query OK, 1 row affected (0.01 sec)

mysql> select * from t;
+——+
| t |
+——+
| 10 |
+——+

1 row in set (0.00 sec) 


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的類型的時候,不論是int(3)還是int(11),它在資料庫裡面儲存的都是4個位元組的長度,在使用int(3)的時候如果你輸入的是10,會預設給你儲存位010,也就是說這個3代表的是預設的一個長度,當你不足3位時,會幫你不全,當你超過3位時,就沒有任何的影響。

前天組管問我 int(10)與int(11)有什麼區別,當時覺得就是長度的區別吧,現在看,他們之間除了在儲存的時候稍微有點區別外,在我們使用的時候是沒有任何區別的。int(10)也可以代表2147483647這個值int(11)也可以代表。


我們通常在建立資料庫的時候都不會加入這個選項,所以可以說他們之間是沒有區別的。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.