• 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 设置后,无法插入负数。
  • 相关阅读:
    拾遗:systemctl --user
    拾遗:~/.zshrc 配置
    拾遗:YouCompleteMe 前传——编译安装 llvm + clang
    洛谷P1546 最短网络 Agri-Net(最小生成树,Kruskal)
    洛谷P1462 通往奥格瑞玛的道路(二分+spfa,二分+Dijkstra)
    HDU6669 Game(思维,贪心)
    HDU6672 Seq(找规律)
    HDU6668 Polynomial(模拟)
    洛谷P1378 油滴扩展(搜索)
    机器学习数学基础(四)
  • 原文地址:https://www.cnblogs.com/gaofangye/p/13345489.html
Copyright © 2020-2023  润新知