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 |+------+

这下注意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。

转载至:
作者:HAOKUN

出处:http://wanghaokun.cnblogs.com/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值