先理解一下两者都代表什么意思
int(10)
给 int 类型设置字节长度为 10,int 类型默认的值范畴大小是:-2147483648 和 2147483647。
unsigned
设置 int 类型不能为正数。
创立 MySql 表进行演示
创立 test-in 演示 int(10)
CREATE TABLE `test-in` (`id` int(10) NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
- 向 test-in 表中插入数据。
insert into `test-in` values(2147483647);
insert into `test-in` values(-2147483648);
- 查看表中数据。
- 尝试一下,在这两个区间之外进行插入数据,是否能够胜利插入。
- 下面图中能够看到两条 Sql 均都报出异样,插入的值超出了范畴,没方法进行插入数据,只能在 int 范畴区间内进行数据插入。
创立 test-un 演示 int unsigned
CREATE TABLE `test-un` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
)
- 创立后查问一下 sql
在 sql 语句中,我并没有指定 int 类型的字节长度,执行完 sql 当前,unsigned 会默认设置 int 字节长度为 10。
- 上述中说过应用 unsigned 属性是没方法向表中插入正数的,这里尝试一下
能够看到图中提醒插入的值超出了范畴,因为 unsigned 属性的限度,咱们没有方法插入正数。
- 测试超过 int 默认的整数最大值插入
上图中插入胜利了,阐明在应用 unsigned 属性时,将默认 int 类型的取值范畴调整了。
- 调整后的 int 取值范畴
intMaxValue = 2147483648 + 2147483647 = 4294967295
- 测试一下是否真的能够插入 4294967295 到数据库中
答案是能够的。
区别总结
- 默认的 int 类型,取值范畴是 -2147483648-2147483647 之间,而 unsigned 的取值范畴是 0-4294967295 之间。
- 默认的 int 类型,容许插入正数,unsigned 设置后,无奈插入正数。