mysql中的int(M)

本文解析了MySQL中INT类型的特性,特别是在定义INT(M)时M的实际意义,并通过示例展示了zerofill属性如何影响数值的显示格式。

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

在使用pdm设计表结构时,经常把int类型设置成int(11)。
于是问自己,int类型存储时不就是占4 个字节的存储空间吗?怎么mysql字段里的int还能设计成不同长度的?
测试了一把,发现其实这个长度跟存储没什么关系,存储时都是占4个字节的。
CREATE TABLE `test1` (
   `IDX` bigint(20) NOT NULL AUTO_INCREMENT,
   `ID` int(1) DEFAULT NULL,
   `ID2` int(3) DEFAULT NULL,
   `ID3` int(11) DEFAULT NULL,
   `ID4` int(11) DEFAULT NULL,
   `ID5` int(11) DEFAULT NULL,
   PRIMARY KEY (`IDX`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;

mysql中的int(M)

int(M)里的M表示最大显示宽度,当加上 zerofill才会表现出效果来。 比如 int(3) zerofill,你插入到数据库里的是10,则实际插入为010,也就是在前面补充加了一个0.如果int(3)和int(10)不加 zerofill,则它们没有什么区别.M不是用来限制int个数的.int(M)的最大值和最小值与undesigned有关。借用网上的结论:
mysql> desc test;
+-------+--------------------------+------+-----+---------+----------------+
| Field | Type                               | Null | Key | Default | Extra               |
+-------+--------------------------+------+-----+---------+----------------+
| id      | int(3) unsigned zerofill | NO    | PRI | NULL      | auto_increment |
+-------+--------------------------+------+-----+---------+----------------+
1 row in set (0.01 sec)

mysql> select * from test ;

+------+

| id    |

+------+

|   001 |

|   010 |

| 1234 |

+------+

3 rows in set (0.00 sec)

不补零:

mysql> desc test;
+-------+--------+------+-----+---------+----------------+
| Field | Type    | Null | Key | Default | Extra               |
+-------+--------+------+-----+---------+----------------+
| id      | int(3) | NO    | PRI | NULL      | auto_increment |
+-------+--------+------+-----+---------+----------------+
1 row in set (0.01 sec)

mysql> select * from test ;
+------+
| id    |
+------+
|      1 |
|    10 |
| 1234 |
+------+
3 rows in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值