关于mysql:MySqlint10-与-int-unsigned-之前的区别

4次阅读

共计 886 个字符,预计需要花费 3 分钟才能阅读完成。

先理解一下两者都代表什么意思

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`)
)
  1. 向 test-in 表中插入数据。
insert into `test-in` values(2147483647);
insert into `test-in` values(-2147483648);
  1. 查看表中数据。

  1. 尝试一下,在这两个区间之外进行插入数据,是否能够胜利插入。

  1. 下面图中能够看到两条 Sql 均都报出异样,插入的值超出了范畴,没方法进行插入数据,只能在 int 范畴区间内进行数据插入。

创立 test-un 演示 int unsigned

CREATE TABLE `test-un` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`id`)
)
  1. 创立后查问一下 sql

在 sql 语句中,我并没有指定 int 类型的字节长度,执行完 sql 当前,unsigned 会默认设置 int 字节长度为 10。

  1. 上述中说过应用 unsigned 属性是没方法向表中插入正数的,这里尝试一下

能够看到图中提醒插入的值超出了范畴,因为 unsigned 属性的限度,咱们没有方法插入正数。

  1. 测试超过 int 默认的整数最大值插入

上图中插入胜利了,阐明在应用 unsigned 属性时,将默认 int 类型的取值范畴调整了。

  1. 调整后的 int 取值范畴

intMaxValue = 2147483648 + 2147483647 = 4294967295

  1. 测试一下是否真的能够插入 4294967295 到数据库中

答案是能够的。

区别总结

  1. 默认的 int 类型,取值范畴是 -2147483648-2147483647 之间,而 unsigned 的取值范畴是 0-4294967295 之间。
  2. 默认的 int 类型,容许插入正数,unsigned 设置后,无奈插入正数。
正文完
 0