MySql中int 与 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. 查看表中数据。

MySql中int  与 int unsigned 的区别

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

MySql中int  与 int unsigned 的区别

MySql中int  与 int unsigned 的区别

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

创建 test-un 演示 int unsigned

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

MySql中int  与 int unsigned 的区别

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

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

MySql中int  与 int unsigned 的区别

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

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

MySql中int  与 int unsigned 的区别

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

  1. 调整后的 int 取值范围

intMaxValue = 2147483648 + 2147483647 = 4294967295

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

MySql中int  与 int unsigned 的区别

答案是可以的。

区别总结

  1. 默认的 int 类型,取值范围是 -2147483648-2147483647 之间,而 unsigned 的取值范围是 0-4294967295 之间。
  2. 默认的 int 类型,允许插入负数,unsigned 设置后,无法插入负数。

原文链接:https://segmentfault.com/a/1190000023306375

上一篇:stm32点灯之路


下一篇:【开源项目】huffandpuff小巧的哈夫曼编码器与解码器