MySQL整數類型說明 int(11) vs int(20)

整數類型後面跟的是顯示的寬度。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的顯示長度,系統會自動預設顯示長度大小。

相關文章
相關標籤/搜索