int(1) 和 int(10) 有什么区别?

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 在MySQL中,`int`类型后面的数字(如`int(1)`、`int(10)`)并不影响其存储范围,最大值仍为4294967295(无符号)。这些数字只有在配合`zerofill`使用时才有意义,用于显示时不足位数补0。例如,`int(4) zerofill`会将1显示为0001。这适用于需要固定长度编号的场景,如学号等。

引言

我们有时候在面试的时候,面试官会问到有关数据库的相关问题,有时就会被问到:在mysql中创建一个表,有个id的字段为int类型,那么这个int后面的数字有什么作用么,这个数字会不会就是字段设置上限值得时候使用的呢,int(1) 和 int(10) 有什么区别?下面我们就来创建一个user表,来看一看这两有什么区别:

我们知道在mysql中 int占4个字节,那么对于无符号的int,最大值是2^32-1 = 4294967295,将近40亿,难道用了int(1),就不能达到这个最大值吗?

代码解读

复制代码

CREATE TABLE `user` (  
    `userId` int(1) unsigned NOT NULL AUTO_INCREMENT,   
    PRIMARY KEY (`userId`)
 ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

userId字段为无符号的int(1),我来插入一个最大值看看。

sql

代码解读

复制代码

mysql> INSERT INTO `user` (`userId`) VALUES (4294967295);

我们可以看到这条数据是成功插入了,说明int后面的数字,不影响int本身支持的大小,int(1)、和int(10)实际上是没什么区别的。

使用0来作为填充

int后面的数字实际上是配合zerofill一起使用才有效。我们来看一个例子:

sql

代码解读

复制代码

CREATE TABLE `user` (  
    `userId` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
     PRIMARY KEY (`userId`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;

注意int(4)后面加了个zerofill,我们先来插入条数据。

scss

代码解读

复制代码

mysql> INSERT INTO `user` (`userId`) VALUES (1),(10),(100),(1000);

分别成功插入了userId = 1、10、100、1000 4条数据,然后我们来查询下:

sql

代码解读

复制代码

mysql> select * from user;

通过查询刚刚插入的数据可以发现 int(4) + zerofill实现了不足4位补0的现象,但不使用zerofill int(4)是没有用的。而且对于0001这种,数据库底层存储的还是1,只是在展示的会补0。

总结

int后面的数字不能表示字段的长度,int(1)和int(10)是没有区别的,但当int(num)一般加上zerofill,才有效果。

zerofill的作用一般可以用在一些编号相关的数字中,比如学生的编号 001 002 ... 999这种,这样可以很直观的表示数据,方便处理而且还更加美观。


转载来源:https://juejin.cn/post/7220299565005520955

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
8天前
|
机器学习/深度学习 算法 数据处理
《从贝叶斯定理到朴素贝叶斯算法:解锁概率推理的奥秘》
贝叶斯定理与朴素贝叶斯算法是机器学习中的重要工具。贝叶斯定理由托马斯·贝叶斯提出,用于根据新证据更新事件发生的概率,从先验概率推导出后验概率。它为概率推理提供了理论基础。朴素贝叶斯算法基于此定理,假设特征间相互独立,广泛应用于文本分类、垃圾邮件过滤等领域。两者相辅相成,前者为后者提供理论支撑,后者则是前者在实际问题中的具体应用,共同助力解决复杂的数据处理任务。
53 25
|
14天前
|
机器学习/深度学习 人工智能 运维
智能日志分析:用AI点亮运维的未来
智能日志分析:用AI点亮运维的未来
98 15
|
14天前
|
机器学习/深度学习 人工智能 算法
《AI芯片:如何让硬件与AI计算需求完美契合》
在人工智能快速发展的今天,AI芯片成为推动该领域前行的关键力量。AI芯片如同“超级大脑”,支撑着从智能语音助手到自动驾驶汽车等各种复杂应用。它通过GPU、ASIC和FPGA等架构,优化矩阵运算、内存管理和数据传输,满足大规模数据处理需求。尽管面临通用性和成本挑战,未来AI芯片有望在异构计算、新兴技术和降低成本方面取得突破,为AI发展注入强大动力。
128 17
|
4天前
|
人工智能 开发者
钉钉AI助理接入DeepSeek,深度思考,能力更强
钉钉AI助理全面接入DeepSeek系列模型,包括R1、V3和R1-qwen32b蒸馏版。用户可在钉钉上创建AI助理时选择这些模型,并使用全新模板一键创建、发布和使用基于DeepSeek模型的AI助理。PC端和移动端均提供了简便的操作步骤来创建和发布AI助理,无需复杂配置即可实现深度思考和联网查询功能。此次更新旨在提升工作效率,提供更丰富的选择和更智能的体验。
165 12
|
8天前
|
XML Java 测试技术
Spring IOC—基于注解配置和管理Bean 万字详解(通俗易懂)
Spring 第三节 IOC——基于注解配置和管理Bean 万字详解!
72 26
|
19天前
超好看的404提示页面HTML源码
超好看的404提示页面HTML源码
154 77
|
21天前
|
人工智能 Linux 数据安全/隐私保护
OS Copilot功能测评
作为一名开发者,我首次尝试了阿里云的OS Copilot,主要用于人工智能应用开发。安装过程简单,只需按官方教程操作,支持Alinux、CentOS等系统。使用中,通过在指令前加“co”唤醒AI助手,-t/-f/管道功能显著提升效率,尤其对不熟悉Linux指令的用户帮助很大。然而,上下文记忆和命令连续执行方面仍有改进空间,例如在多步操作时容易中断。总体体验新颖且实用,但希望未来能增强交互连续性和命令执行的灵活性。
|
13天前
|
机器学习/深度学习 人工智能 监控
DiffuEraser:阿里通义实验室推出的视频修复模型,支持高清修复、时间一致性优化
DiffuEraser 是阿里通义实验室推出的基于稳定扩散模型的视频修复工具,能够生成丰富的细节并保持时间一致性,适用于电影修复、监控增强等场景。
105 25
DiffuEraser:阿里通义实验室推出的视频修复模型,支持高清修复、时间一致性优化
|
24天前
|
弹性计算 运维 Ubuntu
os-copilot在Alibaba Cloud Linux镜像下的安装与功能测试
我顺利使用了OS Copilot的 -t -f 功能,我的疑惑是在换行的时候就直接进行提问了,每次只能写一个问题,没法连续换行更有逻辑的输入问题。 我认为 -t 管道 功能有用 ,能解决环境问题的连续性操作。 我认为 -f 管道 功能有用 ,可以单独创建可连续性提问的task问题。 我认为 | 对文件直接理解在新的服务器理解有很大的帮助。 此外,我还有建议 可以在非 co 的环境下也能进行连续性的提问。
65 7
|
13天前
带动态星空的404页面模板
带动态星空的404页面模板
225 19

热门文章

最新文章