MySQL中int(1)与int(20)的区别

我们经常会遇到数据类型的问题。其中,int是一种常见的整数类型,但是在实际使用中,我们可能会遇到int(1)和int(20)这样的数据类型。那么,它们之间有什么区别呢?

在MySQL中,int(M)是一个整数类型,总共可以存储的位数是4个字节(32位)。其中,M表示显示宽度,也就是显示的最大长度。如果数值的位数小于M,那么在数字前面会用空格进行填充;如果数值的位数大于M,那么会进行裁剪。

int(1)和int(20)的区别:

int(1): 表示显示宽度为1,用于控制显示时的位数,不限制存储的范围。

int(20): 表示显示宽度为20,同样不限制存储的范围,用于对齐和显示效果。

int(1)和int(20)的主要区别在于显示宽度不同,这会影响到数据的显示效果。但是,它们在存储数值的范围上是一样的,都是-2^31到

2^31-1。在实际使用中,我们应该根据实际需求来选择合适的数据类型。如果需要精确控制数据的显示宽度,那么就可以使用int(M);如果不需要精确控制数据的显示宽度,那么就可以直接使用int(1)或int即可。

测试一:int(1)、int(20) 都可以存储 int 类型最大值,说明对存储大小无影响。

--创建表

复制代码
CREATE TABLE example_table (
    small_int_col INT(1),
    large_int_col INT(20)
);

-- 插入数据

复制代码
INSERT INTO example_table (small_int_col, large_int_col) VALUES (123456789, 123456789);

--查询结果

复制代码
SELECT * FROM example_table

测试二:zerofill(零填充)属性

通过使用ZEROFILL属性来填充零,以保持固定的位数。这对于要求固定位数的应用场景非常有用,例如订单号、账户号等。

--创建表

复制代码
CREATE TABLE example_table_zerofill (
    small_int_col INT(1) ZEROFILL,
    large_int_col INT(20) ZEROFILL
);

-- 插入数据

复制代码
INSERT INTO example_table_zerofill (small_int_col, large_int_col) VALUES (123456789, 12345), (123456789, 23456);

--查询结果

复制代码
SELECT * FROM example_table_zerofill
相关推荐
Rain的Java大神之路8 小时前
如何快速上传10G文件
java·spring boot·redis·后端·mysql·spring cloud·面试
十二同学啊8 小时前
向量数据库:从核心原理到 RAG 与 Java 实战
数据库
蓝速科技9 小时前
会议室门牌公告通知发布选型与落地指南丨蓝速科技
大数据·运维·数据库·人工智能·科技
大海星辰79810 小时前
一次对账SQL“灵异事件”排查:NOT IN返回空集的坑
mysql
Linux-lucky10 小时前
32-38-Linux学习之旅之MySQL综合
linux·运维·学习·mysql·ubuntu
一 乐12 小时前
二手交易平台|基于springboot + vue二手交易平台(源码+数据库+文档)
java·数据库·vue.js·spring boot·小程序
SelectDB12 小时前
同等资源下 Apache Doris 4.2 vs StarRocks 4.1.1:1TB SSB 与 TPC-H 性能实测
大数据·数据库·数据分析
这个DBA有点耶12 小时前
数据库集群与分布式架构:三条技术路线对比、金仓KES RAC实测数据与决策框架
数据库·程序员·架构
MayBaymax12 小时前
MongoDB 索引与事务
java·数据库·mongodb
SelectDB12 小时前
Doris vs ClickHouse:企业 OLAP 走向下一阶段,两种技术路线如何选择
大数据·数据库·数据分析