Integer類型,即整數類型,MySQL支持的整數類型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。html
每種整數類型所需的存儲空間和範圍以下:mysql
類型 |
字節 | 最小值sql (有符號)ui |
最大值spa (有符號)code |
最小值orm (無符號)htm |
最大值blog (無符號)get |
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 |
|
|
0 |
|
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)
當列設置爲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)
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/