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 设置后,无法插入负数。
  • 相关阅读:
    Hello, Fedora.
    Android与Linux分道扬镳
    VIM教程V1.5梁昌泰
    强大的NTFS文件系统
    Linux下的cc与gcc
    g++与gcc的区别
    Fedora下解压缩的相关问题
    The GNU C Reference Manual
    Linux Kbuild文档
    实验一:计算机是怎样工作的
  • 原文地址:https://www.cnblogs.com/gaofangye/p/13345489.html
Copyright © 2011-2022 走看看