MySQL 中 int(1) 与 int(10) 的区别
程序员文章站
2022-06-01 22:03:26
...
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 |+------+
这**意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
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。
推荐阅读
-
Java中关于int和Integer的区别详解
-
浅谈python中np.array的shape( ,)与( ,1)的区别
-
关于Mysql存储引擎中InnoDB与Myisam的主要区别介绍
-
详解go语言 make(chan int, 1) 和 make (chan int) 的区别
-
PHP API中,MYSQL与MYSQLI的持久连接区别
-
python中ASCII码字符与int之间的转换方法
-
Mysql中tinyint(1)和tinyint(4)的区别详析
-
Mysql中tinyint(1)和tinyint(4)的区别详析
-
Mysql中distinct与group by的去重方面的区别
-
对比MySQL中int、char以及varchar的性能