mysql中int(1)与int(10)的区别
INT[(M)] [UNSIGNED] [ZEROFILL]
普通⼤⼩的整数。带符号的范围是-2147483648到2147483647。⽆符号的范围是0到4294967295。
INT(1) 和 INT(10)本⾝没有区别,但是加上(M)值后,会有显⽰宽度的设置。
如代码所⽰:
mysql> create table test(id int(3));
Query OK, 0 rows affected (0.47 sec)
mysql> insert into test values(12);
Query OK, 1 row affected (0.12 sec)
mysql> insert into test values(1234);
Query OK, 1 row affected (0.10 sec)
mysql> select * from test;
+------+| id  |+------+|  12 || 1234 |+------+
再试⼀下。这下咱们加上zerofill。
mysql> create table test1(id int(3) zerofill);
Query OK, 0 rows affected (0.32 sec)
mysql> insert into test1 value(12);
Query OK, 1 row affected (0.07 sec)
mysql> insert into test1 value(1234);
Query OK, 1 row affected (0.05 sec)
mysql> select * from test1;
+------+| id  |+------+|  012 || 1234 |+------+
字符串长度1是什么意思这下注意12前⾯输出多了个0,int(M) 的值多了个0,这就是显⽰宽度的限制。⽽多出来的还会显⽰出来。只是系统判定12显⽰宽度不⾜,会补0来补全显⽰宽度
但是要注意插⼊负数的时候:
没有设置zerofill的时候负数正常显⽰
mysql> insert into test value(-1234);
Query OK, 1 row affected (0.07 sec)
mysql> select * from test;
+-------+| id    |+-------+|    12 ||  123 || -1234 |+-------+3 rows in set (0.00 sec)
咱再来看看设置 zerofill的时候:
mysql> insert into test1 value(-1234);
Query OK, 1 row affected, 1 warning (0.11 sec)
mysql> select * from test1;
+------+| id  |+------+|  012 || 1234 ||  000 |+------+
输出为000,插⼊是-1234 。显⽰是000。
原来添加zerofill的时候系统会给⾃动添加上unsigned属性。就是⾮负数。⽽设置的显⽰宽度为3位。所以就会输出000。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。