總結瞧省,int(M) zerofill鳍贾,加上zerofill后M才表現(xiàn)出有點點效果,比如int(3) zerofill,你插入到數(shù)據(jù)庫里的是10,則實際插入為010,也就是在前面補充加了一個0.如果int(3)和int(10)不加zerofill,則它們沒有什么區(qū)別.M不是用來限制int個數(shù)的.int(M)的最大值和最小值與undesigned有關候学,最下面那副圖有說明.
mysql> create table t (t int(3) zerofill);
Query OK, 0 rows affected (0.00 sec)
mysql> insert into t set t = 10;
Query OK, 1 row affected (0.00 sec)
mysql> select * from t;
+——+
| t |
+——+
| 010 |
+——+
1 row in set (0.11 sec)
Zerofill with default width, the same as int(10):
mysql> create table t (t int zerofill);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into t 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 t (t int);
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t set t = 10;
Query OK, 1 row affected (0.01 sec)
mysql> select * from t;
+——+
| t |
+——+
| 10 |
+——+
1 row in set (0.00 sec)
以上轉(zhuǎn)載自 http://hi.baidu.com/nancy0754/blog/item/2f3ea13a957a27d7d5622535.html
1 bytes = 8 bit ,一個字節(jié)最多可以代表的數(shù)據(jù)長度是2的8次方 11111111 在計算機中也就是
-128到127
1.BIT[M]
位字段類型梳码,M表示每個值的位數(shù)伍掀,范圍從1到64,如果M被忽略濒蒋,默認為1
2.TINYINT[(M)] [UNSIGNED] [ZEROFILL]M默認為4
很小的整數(shù)把兔。帶符號的范圍是-128到127。無符號的范圍是0到255县好。
3.BOOL,BOOLEAN
是TINYINT(1)的同義詞翁授。zero值被視為假晾咪。非zero值視為真。
4.SMALLINT[(M)] [UNSIGNED] [ZEROFILL] M默認為6
小的整數(shù)谍倦。帶符號的范圍是-32768到32767剂跟。無符號的范圍是0到65535减途。
5.MEDIUMINT[(M)] [UNSIGNED] [ZEROFILL] M默認為9
中等大小的整數(shù)曹洽。帶符號的范圍是-8388608到8388607。無符號的范圍是0到16777215税产。
6.INT[(M)] [UNSIGNED] [ZEROFILL]M默認為11
普通大小的整數(shù)偷崩。帶符號的范圍是-2147483648到2147483647。無符號的范圍是0到4294967295衫冻。
7.BIGINT[(M)] [UNSIGNED] [ZEROFILL] M默認為20
大整數(shù)谒出。帶符號的范圍是-9223372036854775808到9223372036854775807。無符號的范圍是0到18446744073709551615笤喳。
注意:這里的M代表的并不是存儲在數(shù)據(jù)庫中的具體的長度,以前總是會誤以為int(3)只能存儲3個長度的數(shù)字蒙畴,int(11)就會存儲11個長度的數(shù)字呜象,這是大錯特錯的。
其實當我們在選擇使用int的類型的時候鸠项,不論是int(3)還是int(11)子姜,它在數(shù)據(jù)庫里面存儲的都是4個字節(jié)的長度,在使用int(3)的時候如果你輸入的是10哥捕,會默認給你存儲位010,也就是說這個3代表的是默認的一個長度,當你不足3位時扬舒,會幫你不全凫佛,當你超過3位時孕惜,就沒有任何的影響晨炕。
前天組管問我 int(10)與int(11)有什么區(qū)別,當時覺得就是長度的區(qū)別吧削罩,現(xiàn)在看费奸,他們之間除了在存儲的時候稍微有點區(qū)別外,在我們使用的時候是沒有任何區(qū)別的愿阐。int(10)也可以代表2147483647這個值int(11)也可以代表。