Mysql中int(1) int(5)中括号数字作用

本文深入探讨MySQL中INT(1)的实际含义,揭示其与显示宽度的关系而非存储限制,同时解析不同INT类型如TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT的存储范围和使用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在处理数据库问题的时候,发现对于某个字段sort 在初始化时,是int(1),但是仍然存进去了超过9的数字,存入99依然可以,那我要这1又有何用呢?他到底能存多少长度?

在查阅了网上的资料后发现:

int(1),这个长度1并不代表允许存储的宽度

首先搬运一个整数类型存储和范围:

(PS:MD里面的表格真难用啊,还不如去前端编辑器里先处理好再复制出来)

类型
字节
最小值
最大值
(带符号的/无符号的)
(带符号的/无符号的)
TINYINT
1
-128
127
0
255
SMALLINT
2
-32768
32767
0
65535
MEDIUMINT
3
-8388608
8388607
0
16777215
INT
4
-2147483648
2147483647
0
4294967295
BIGINT
8
-9223372036854775808
9223372036854775807
0
18446744073709551615

表格一共有四列分别表式:字段类型, 占用字节数, 允许存储的最小值, 允许存储的最大值.


我们拿int类型为例:
int类型, 占用字节数为4byte, 学过计算机原理的同学应该知道, 字节(byte)并非是计算机存储的最小单位, 还有比字节(byte)更小的单位, 也就是位(bit),一个位就代表一个0或1; 8个位组成一个字节; 一般字节用大写B来表示byte, 位用小写b来表示bit.
计算机存储单位的换算:
1B=8b
1KB=1024B
1MB=1024KB
那么根据int类型允许存储的字节数是4个字节, 我们就能换算出int UNSIGNED(无符号)类型的能存储的最小值为0, 最大值为4294967295(即4B=32b, 最大值即为32个1组成);



那么在这里究竟这里int(1) 和int (5) int(10) 有什么区别呢

这里的1和5和10 只是显示宽度,即如果我存储了 一个 9, 则在mysql中,其实int(1)的字段存储的是9,而int (5)存储的是00009,而int(10)存储的是00000000009.

其实他们存储的长度都是一样的,只是显示宽度不一样而已。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值