Mysql的int类型探究

举报
经典鸡翅 发表于 2022/02/18 00:30:02 2022/02/18
【摘要】 前言 最近被问到了这个问题,原题目应该是mysql的int(1)和int(10)有什么区别。当时没答好,也确实没注意过,故在此研究记录下。 探究 mysql中int所能设置的长度范围是1~255。当你输入小于1的数字的时候,会自动给你置为11。当你输入的数值是大于255的时候,会提示你最大为255。 但是实际上你设置多...

前言

最近被问到了这个问题,原题目应该是mysql的int(1)和int(10)有什么区别。当时没答好,也确实没注意过,故在此研究记录下。

探究

mysql中int所能设置的长度范围是1~255。当你输入小于1的数字的时候,会自动给你置为11。当你输入的数值是大于255的时候,会提示你最大为255。
但是实际上你设置多少是没有区别的,效果和int(11)是一摸一样的。你设置一个int(1),你以为只能存储0~9,其实不然,他可以存储最多11位数字。存储的范围是-2147483648 ~ 2147483647。
那么int后面指定的数组到底是什么作用呢,只有在加入zerofill的时候,才能看出效果。如果你的int设置为int(4),当你存储1的时候,那么展示的就是0001。
由此看出结论,int后面代表的是宽度。实际占用空间永远为4字节。
需要注意的是,不要用navicat进行探究,navicat看不出效果,用控制台才可以。

结论

mysql的int的数字只是为了展示长度用的,float的数字才会限制实际的数据范围,比如 float(3,2) 只能够写入 0.00~999.99.

扩展

MySQL的 int 和 tinyint 的默认长度是 int(11) 和 tinyint(4), 而boolean 型实际存储的是 tinyint(1).

存储范围


上述表格中的数值类型都是定长的,也就是说,无论你存的数值是多少,多大或者多小,占用的字节大小都是固定的。例如,之前设置的int(1),虽然M值是1个字符,但是它所占用的空间大小永远都是4个字节的大小,换句话说就是,你可以存入有符号整型从-2 147 483 648到2 147 483 647包括这两个数的中间任何一个数。int(1)和int(11)占用的是4个字节,可以存入上述这些数,tinyint(1)和tinyint(4)占用的是1个字节,可以存入从-128到127的数,这也是为什么之前的一次试验,int(1)插入128成功,而tinyint(1)插入128却提示超出长度。
除了bigdeciaml,其他的长度最大都是255。bigdecimal如下

文章来源: blog.csdn.net,作者:经典鸡翅,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/hanqing456/article/details/115399435

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。