MySQL Integer類型與INT(11)


1.介紹

Integer類型,即整數類型,MySQL支持的整數類型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。

 

1.1 空間和范圍

每種整數類型所需的存儲空間和范圍如下:

類型 字節

最小值

(有符號)

最大值

(有符號)

最小值

(無符號)

最大值

(無符號)

TINYINT 1 -128 127 0 255
SMALLINT 2 -32768 32767 0 65535
MEDIUMINT 3 -8388608 8388607 0 16777215
INT 4 -2147483648 2147483647 0 4294967295
BIGINT 8

-263

(-9223372036854775808)

263-1

(9223372036854775807)

0

264-1

(18446744073709551615)

 

2. INT(11)

2.1 數字是否限制長度?

id INT(11) NOT NULL AUTO_INCREMENT,

在一些建表語句會出現上面 int(11) 的類型,那么其代表什么意思呢?

對於Integer類型括號中的數字稱為字段的顯示寬度。這與其他類型字段的含義不同。對於DECIMAL類型,表示數字的總數。對於字符字段,這是可以存儲的最大字符數,例如VARCHAR(20)可以存儲20個字符。

顯示寬度並不影響可以存儲在該列中的最大值。INT(5) 和 INT(11)可以存儲相同的最大值。哪怕設置成 INT(20) 並不意味着將能夠存儲20位數字(BIGINT),該列還是只能存儲INT的最大值。

示例

創建一個臨時表:

CREATE TEMPORARY TABLE demo_a (
	id INT(11) NOT NULL AUTO_INCREMENT,
	a INT(1) NOT NULL,
	b INT(5) NOT NULL,
	PRIMARY KEY (`id`)
)

插入超過"長度"的數字:

INSERT INTO demo_a(a,b) VALUES(255, 88888888);

查看結果:發現數字並不是設置長度

mysql> SELECT * FROM demo_a;
+----+-----+----------+
| id | a   | b        |
+----+-----+----------+
|  1 | 255 | 88888888 |
+----+-----+----------+
1 row in set (0.03 sec)

 

2.2 數字表達什么意思?

當列設置為UNSIGNED ZEROFILL時,INT(11)才有意義,其表示的意思為如果要存儲的數字少於11個字符,則這些數字將在左側補零。

注意:ZEROFILL默認的列為無符號,因此不能存儲負數。

示例

創建一個臨時表:b列設置為UNSIGNED ZEROFILL

CREATE TEMPORARY TABLE demo_a (
	id INT(11) NOT NULL AUTO_INCREMENT,
	a INT(11) NOT NULL,
	b INT(11) UNSIGNED ZEROFILL NOT NULL,
	PRIMARY KEY (`id`)
);

 插入數值:

INSERT INTO demo_a(a,b) VALUES(1, 1);

 結果:b列的左側使用了0填充長度

mysql> SELECT * FROM demo_a;
+----+---+-------------+
| id | a | b           |
+----+---+-------------+
|  1 | 1 | 00000000001 |
+----+---+-------------+
1 row in set (0.18 sec)

  

3. 參考資料

Integer類型https://dev.mysql.com/doc/refman/5.6/en/integer-types.html

What does int(11) means in MySQL?https://www.virendrachandak.com/techtalk/mysql-int11-what-does-it-means/

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM