整數類型後面跟的是顯示的寬度。M指示最大顯示寬度。最大有效顯示寬度是255。顯示寬度與存儲大小或類型包含的值的範圍無關。mysql
實踐出真知:sql
mysql> create table test2 ( a int , b int(20) unsigned not null , c int(40) unsigned zerofill ) engine = innodb ;測試
Query OK, 0 rows affected (0.06 sec)spa
mysql> show create table test2;innodb
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+table
| Table | Create Table |test
+-------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------+select
| test2 | CREATE TABLE `test2` (數據類型
`a` int(11) DEFAULT NULL,im
`b` int(20) unsigned NOT NULL,
`c` int(40) unsigned zerofill DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
給表插入記錄。
mysql> insert into test2 values(1,2000000, 34823424);
Query OK, 1 row affected (0.04 sec)
mysql> select * from test2;
+------+---------+------------------------------------------+
| a | b | c |
+------+---------+------------------------------------------+
| 1 | 2000000 | 0000000000000000000000000000000034823424 |
+------+---------+------------------------------------------+
mysql> alter table test2 add d int(256) not null;
ERROR 1439 (42000): Display width out of range for column 'd' (max = 255)
從以上測試能夠說明如下:
1:對於整形數據類型,數據存儲所佔的字節數是固定長度的。好比
INT[(M)] [UNSIGNED] [ZEROFILL] 。
其中
M指示最大顯示寬度。最大有效顯示寬度是255。當插入的表的字段數據長度小於設定的INT(M)最大長度的時候,檢索出來的數據會自動空格補充。
2:zerofill(補零),當實際插入的數據長度小於建表的時候設定的長度時候,它會從左開始補零。這個修飾符能夠防止MySQL存儲負值。
3:對於建表的時候,不指定INT的顯示長度,系統會自動預設顯示長度大小。