MySQL中int(10)和int(11)的区别详解

 更新时间:2023年03月02日 09:18:01   作者:蹲街式等待  
本文主要介绍了MySQL中int(10)和int(11)的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

一、背景

在创建数据库表的时候,我们经常会用到int(x)来定义一个字段的类型,一直误以为这里的x表示存储数字的长度。

其实大错特错,这里的 x 指的是 最大显示宽度(最大有效显示宽度是255),且显示宽度与存储大小或类型包含的值的范围无关。

二、MySQL整数类型

类型字节取值范围显示宽度
tinyint1-128 ~ 1274
smallint2-32768 ~ 327676
mediumint3-8388608 ~ 83886079
int4-2147483648 ~ 214748364711
bigint8-9223372036854775808 ~ 922337203685477580720

MySQL 类型关键字后面的括号内指定整数值的显示宽度(例如,INT(4))。

该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度。显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示。

当结合可选扩展属性 zerofill 使用时, 默认补充的空格用零代替。

例如,对于声明为 INT(5) zerofill 的列,值 4 检索为 00004。请注意如果在整数列保存超过显示宽度的一个值,当 MySQL 为复杂联接生成临时表时会遇到问题,因为在这些情况下 MySQL 相信数据适合原列宽度。

所有整数类型可以有一个可选(非标准)属性 UNSIGNED。当你想要在列内只允许非负数和该列需要较大的上限数值范围时可以使用无符号值。

那取值范围和显示宽度到底有什么关系呢?利用 int 做了个实验:

create table int_demo(
    id int not null auto_increment,
    int_4 int(4) UNSIGNED zerofill,
    int_8 int(8) UNSIGNED zerofill,
    primary key (id)
);

insert into int_demo (int_4, int_8) VALUES (2, 1000),(123456, 1234567898);

select * from int_demo;

查询结果:

mysql> select * from int_demo;
+----+--------+------------+
| id | int_4  | int_8      |
+----+--------+------------+
|  1 |   0002 |   00001000 |
|  3 | 123456 | 1234567898 |
+----+--------+------------+
2 rows in set (0.00 sec)

总结:

显示宽度整数类型的取值范围是无关的。

显示宽度只是指明 mysql 最大可能显示的数字个数,数值的位数小于指定的宽度时左侧用数字 0 填充。

如果插入了大于显示宽度的值,只要该值不超过该类型整数的取值范围,数值依然可以插入,而且能够显示出来。

到此这篇关于MySQL中int(10)和int(11)的区别详解的文章就介绍到这了,更多相关MySQL int(10)和int(11)内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • centos6.5下mysql 5.7.19 安装配置方法

    centos6.5下mysql 5.7.19 安装配置方法

    这篇文章主要为大家详细介绍了centos6.5下mysql 5.7.19 安装配置方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • mysql连接器之mysql-connector-java问题

    mysql连接器之mysql-connector-java问题

    这篇文章主要介绍了mysql连接器之mysql-connector-java问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Mysql用户授权(GRANT)语法及示例解读

    Mysql用户授权(GRANT)语法及示例解读

    这篇文章主要介绍了Mysql用户授权(GRANT)语法及示例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • MySQL出现莫名其妙的断开连接以及解决方案

    MySQL出现莫名其妙的断开连接以及解决方案

    这篇文章主要介绍了MySQL出现莫名其妙的断开连接以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 在JPA项目启动时如何新增MySQL字段

    在JPA项目启动时如何新增MySQL字段

    这篇文章主要介绍了在JPA项目启动时新增MySQL字段,本来用了JPA,直接实体类加参数就可以新增字段了,但是架不住垃圾项目在启动项目时会加载数据库SQL文件去插入数据,需要一些操作帮助修复,需要的朋友可以参考下
    2024-06-06
  • MySQL字段默认值为NULL时的避坑指南

    MySQL字段默认值为NULL时的避坑指南

    在 MySQL 中,字段默认值为 NULL 是一种常见设计,但如果你不小心,NULL 会成为你系统中最隐蔽的问题源头之一,本文将通过真实 SQL 示例,带你了解默认值为 NULL 时常见的“坑”,需要的朋友可以参考下
    2025-05-05
  • MySQL优化之SQL调优策略分享

    MySQL优化之SQL调优策略分享

    这篇文章主要介绍了MySQL优化之SQL调优策略,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • Mysql数据库命令大全

    Mysql数据库命令大全

    mysql命令大家经常会用到,但是很少有朋友整理吧,最近项目不多,抽个时间把mysql数据库命令总结给大家,需要的朋友可以参考下
    2015-09-09
  • asp采用ODBC接口访问MySQL的方法

    asp采用ODBC接口访问MySQL的方法

    asp采用ODBC接口访问MySQL的方法...
    2007-07-07
  • MySQL启动报错:Can not connect to MySQL server的解决方法

    MySQL启动报错:Can not connect to MySQL 

    今天打开数据库出现一个错误,ERROR 2003: Can't connect to MySQL server on 'localhost' 的错误,网上查找原因说是我的mysql服务没有打开,所以本文给大家介绍了MySQL启动报错:Can not connect to MySQL server的解决方法,需要的朋友可以参考下
    2024-03-03

最新评论