zoukankan      html  css  js  c++  java
  • MySql:int(10) 与 int unsigned 之前的区别

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

    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. 查看表中数据。
      image.png

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

    image.png

    1. 上面图中可以看到两条 Sql 均都报出异常,插入的值超出了范围,没办法进行插入数据,只能在 int 范围区间内进行数据插入。

    创建 test-un 演示 int unsigned

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

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

    1. 上述中说过使用 unsigned 属性是没办法向表中插入负数的,这里尝试一下
      image.png

    可以看到图中提示插入的值超出了范围,由于 unsigned 属性的限制,我们没有办法插入负数。

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

    上图中插入成功了,说明在使用 unsigned 属性时,将默认 int 类型的取值范围调整了。

    1. 调整后的 int 取值范围

    intMaxValue = 2147483648 + 2147483647 = 4294967295

    1. 测试一下是否真的可以插入 4294967295 到数据库中
      image.png

    答案是可以的。

    区别总结

    1. 默认的 int 类型,取值范围是 -2147483648-2147483647 之间,而 unsigned 的取值范围是 0-4294967295 之间。
    2. 默认的 int 类型,允许插入负数,unsigned 设置后,无法插入负数。
  • 相关阅读:
    鼠标经过时背景颜色变化
    鼠标经过时弹出下拉菜单
    运行最新创建的镜像:
    docker 保存更改的镜像:
    docker 导入下载模板
    docker导入本地镜像
    docker 创建镜像
    Docker 基于已有镜像的容器创建镜像
    14.2.3 InnoDB Redo Log
    14.2.3 InnoDB Redo Log
  • 原文地址:https://www.cnblogs.com/gaofangye/p/13345489.html
Copyright © 2011-2022 走看看