登录
首页 >  数据库 >  MySQL

MySql:int(10) 与 int unsigned 之前的区别

来源:SegmentFault

时间:2023-01-26 14:45:55 228浏览 收藏

怎么入门数据库编程?需要学习哪些知识点?这是新手们刚接触编程时常见的问题;下面golang学习网就来给大家整理分享一些知识点,希望能够给初学者一些帮助。本篇文章就来介绍《MySql:int(10) 与 int unsigned 之前的区别》,涉及到MySQL、int,有需要的可以收藏一下

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

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
  1. 尝试一下,在这两个区间之外进行插入数据,是否可以成功插入。

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 设置后,无法插入负数。

今天关于《MySql:int(10) 与 int unsigned 之前的区别》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>