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-8.0.15-winx64 解压版安装教程及退出的三种方式

    mysql-8.0.15-winx64 解压版安装教程及退出的三种方式

    本文通过图文并茂的形式给大家介绍了mysql-8.0.15-winx64 解压版安装,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • Linux下mysql的root密码修改方法

    Linux下mysql的root密码修改方法

    mysql是我们经常在linux或者windows需要用的一种数据库,相信每位程序员们对mysql应该都再熟悉不过了,但是有时大脑短路,突然忘记mysql的超级用户root的密码,这个时候就要修改个新的密码了,下面这篇文章就介绍了Linux下mysql的root密码修改方法,一起来看看吧。
    2017-03-03
  • Mycat搭建分库分表方式

    Mycat搭建分库分表方式

    文章介绍了如何使用分库分表架构来解决单表数据量过大带来的性能和存储容量限制的问题,通过在一对主从复制节点上配置数据源,并使用分片算法将数据分配到不同的数据库表中,可以有效降低单表数据量过大导致的效率问题
    2025-01-01
  • 最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!

    最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!

    这篇文章主要为大家详细介绍了linux下mysql 5.7.13 安装配置方法图文教程,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • MySQL双主配置的项目实践

    MySQL双主配置的项目实践

    本文详细介绍了配置两台MySQL服务器之间的主从复制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-12-12
  • 浅谈如何保证Mysql主从一致

    浅谈如何保证Mysql主从一致

    这篇文章主要介绍了浅谈如何保证Mysql主从一致
    2022-03-03
  • mysql 5.7.11 winx64.zip安装配置方法图文教程

    mysql 5.7.11 winx64.zip安装配置方法图文教程

    这篇文章主要为大家分享了mysql5.7.11安装配置方法图文教程,具有一定的参考价值,感兴趣的朋友可以参考一下
    2017-02-02
  • MySQL高效可靠处理持久化数据的教程指南

    MySQL高效可靠处理持久化数据的教程指南

    这篇文章主要给大家详细介绍了 MySQL 如何高效可靠处理持久化数据,文中有详细的流程步骤和代码示例,对我们的学习有一定的帮助,需要的朋友可以参考下
    2023-07-07
  • 详解mysql基本操作语句命令

    详解mysql基本操作语句命令

    本文介绍了 链接Mysql,以及增删改查等功能,需要的朋友可以参考
    2017-04-04
  • MySQL5.6与5.7版本区别有多大

    MySQL5.6与5.7版本区别有多大

    MySQL是一种关系型数据库管理系统,最常用的版本是5.6和5.7,mysql5.7是5.6的新版本,在没有减少功能的情况下新增了功能与进行了优化,例如新增了新的优化器、原生JSON支持、多源复制,还优化了整体的性能、GIS空间扩展、InnoDB...
    2024-03-03

最新评论