mysql中int(3)和int(10)的数值范围是否相同

 更新时间:2021年10月13日 15:44:18   作者:大数据技术派  
依稀还记得有次面试,有面试官问我int(10)与int(11)有什么区别,当时觉得就是长度的区别吧,后来发现事情不是这么简单,这篇文章主要给大家介绍了关于mysql中int(3)和int(10)的数值范围是否相同的相关资料

提问:

mysql的字段,unsigned int(3), 和unsinged int(6), 能存储的数值范围是否相同。如果不同,分别是多大?

回答:

不同,int(3)最多显示3位无符号整体,int(6)最多显示6位无符号数。

如果你的答案和上面的一致,恭喜你和我犯了一样的错误。

真实情况:

int类型整数占4个字节,有符号的范围为:-2^31 ~ 2^31-1,无符号整数范围为:0 ~ 2^32-1,既然都是无符号整数,那么存储范围是一样的,int(6)只是在数字不够6位时用0补全,如果超过6位,则不需要补全。

我们建立下面这张表:

drop table if exists test;
CREATE TABLE `test` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `a` int(11) NOT NULL,
  `b` int(11) unsigned zerofill NOT NULL,
  `c` int(5) DEFAULT NULL,
  `d` int(5) unsigned zerofill NOT NULL,
  `e` int(15) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入一些数据后,用cmd命令行查看:

mysql> select * from test;
+----+------------+-------------+------------+------------+------------+
| id | a          | b           | c          | d          | e          |
+----+------------+-------------+------------+------------+------------+
|  1 |          1 | 00000000001 |          1 |      00001 |          1 |
|  2 | 1234567890 | 01234567890 | 1234567890 | 1234567890 | 1234567890 |
+----+------------+-------------+------------+------------+------------+

发现,无论是int(3), int(6), 都可以显示6位以上的整数。但是,当数字不足3位或6位时,前面会用0补齐。

注意:如果你是用类似navicat这种工具看,不会补充0,可能做了处理,需要用mysql cmd命令行才能看到这种效果。

查下手册,解释是这样的:

MySQL还支持选择在该类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

也就是说,int的长度并不影响数据的存储精度,长度只和显示有关,为了让大家看的更清楚,我们在上面例子的建表语句中,使用了zerofill。

知识点

int(M) 中的M指示最大显示宽度,最大有效显示宽度是 255,且显示宽度与存储大小或类型包含的值的范围无关。

首先说一下 MySQL 的数值类型,MySQL 支持所有标准 SQL 数值数据类型。这些类型包括严格数值数据类型(INTEGER、SMALLINT、DECIMAL 和 NUMERIC),以及近似数值数据类型(FLOAT、REAL 和 DOUBLE PRECISION)。关键字 INT 是 INTEGER 的同义词,关键字 DEC 是DECIMAL 的同义词。

BIT 数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB表。 作为 SQL 标准的扩展,MySQL 也支持整数类型TINYINT、MEDIUMINT 和 BIGINT。下面的表显示了需要的每个整数类型的存储和范围。

结论:

无论是unsigned int(3)或 unsiend int(6),存储的都是4字节无符号整数, 也就是0~2^32。

总结

到此这篇关于mysql中int(3)和int(10)的数值范围是否相同的文章就介绍到这了,更多相关mysql int(3)和int(10)数值范围内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • mysql 错误号码1129 解决方法

    mysql 错误号码1129 解决方法

    在本篇文章里我们给大家整理了关于mysql 错误号码1129以及解决方法,需要的朋友们可以参考下。
    2019-08-08
  • MySQL读写分离原理详细解析

    MySQL读写分离原理详细解析

    这篇文章主要介绍了MySQL读写分离原理详细解析,读写分离是基于主从复制来实现的,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-07-07
  • 用命令创建MySQL数据库(de1)的方法

    用命令创建MySQL数据库(de1)的方法

    下面小编就为大家带来一篇用命令创建MySQL数据库(de1)的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • Mysql存储json格式的实现

    Mysql存储json格式的实现

    本文主要介绍了Mysql存储json格式的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Mysql无法选取非聚合列的解决方法

    Mysql无法选取非聚合列的解决方法

    这篇文章主要给大家介绍了关于Mysql无法选取非聚合列的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • 简单谈谈MySQL数据透视表

    简单谈谈MySQL数据透视表

    这篇文章主要介绍了简单谈谈MySQL数据透视表的相关资料,需要的朋友可以参考下
    2019-08-08
  • mysql如何查询表中的字段数量

    mysql如何查询表中的字段数量

    这篇文章主要介绍了mysql如何查询表中的字段数量问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • 修改mysql5.5默认编码(图文步骤修改为utf-8编码)

    修改mysql5.5默认编码(图文步骤修改为utf-8编码)

    安装mysql后,启动服务并登陆,使用show variables命令可查看mysql数据库的默认编码;mysql数据库的默认编码并不是utf-8如何修改呢,本文将详细介绍,感兴趣的朋友可以了解下
    2013-01-01
  • 浅谈MySQL event 计划任务

    浅谈MySQL event 计划任务

    下面小编就为大家带来一篇浅谈MySQL event 计划任务。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 深入mysql存储过程中表名使用参数传入的详解

    深入mysql存储过程中表名使用参数传入的详解

    本篇文章是对mysql存储过程中表名使用参数传入进行了详细的分析介绍,需要的朋友参考下
    2013-06-06

最新评论