mysql int(m)與int(m)的差別

來源:互聯網
上載者:User

標籤:insert   mil   margin   top   問題   color   ott   idt   unsigned   

預計大多數開始接觸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)也能夠代表。


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

mysql int(m)與int(m)的差別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.