创建 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);
    

    查看表中数据。

    尝试一下,在这两个区间之外进行插入数据,是否可以成功插入。

    创建 test-un 演示 int unsigned

    CREATE TABLE `test-un` (
      `id` int unsigned NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    
  • 创建后查询一下 sql
    image.png
  • 在 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 设置后,无法插入负数。
  • 分类:
    后端
    标签: