MySQL 中 int(11) 的 11 表示什么?

📅 2026/8/21 20:14:27
MySQL 中 int(11) 的 11 表示什么?
在 MySQL 中,int(11)中的11并不表示存储长度或数值范围,而是指显示宽度display width。一、int(11) 的真正含义1.显示宽度int(11)表示当与ZEROFILL属性一起使用时,显示的位数不够 11 位就在左边补零与存储空间、数值范围无关-- 创建测试表CREATETABLEtest(idINT(5)ZEROFILL);-- 插入数据INSERTINTOtestVALUES(1),(123),(12345);-- 查询结果SELECT*FROMtest;-- 输出-- 00001-- 00123-- 123452.不 ZEROFILL 时的表现CREATETABLEtest2(idINT(5)-- 不加 ZEROFILL);INSERTINTOtest2VALUES(1),(123),(12345);SELECT*FROMtest2;-- 输出-- 1-- 123-- 12345二、int 的存储大小和范围类型存储字节有符号范围无符号范围tinyint1-128 ~ 1270 ~ 255smallint2-32768 ~ 327670 ~ 65535mediumint3-8388608 ~ 83886070 ~ 16777215int4-21亿 ~ 21亿0 ~ 42亿bigint8-922亿亿 ~ 922亿亿0 ~ 1844亿亿无论 int(1) 还是 int(11),能存的最大值都一样。三、为什么常见 int(11)历史原因早期 MySQL 工具如 phpMyAdmin默认显示宽度为 11因为 int 的最大值21亿是 10 位数,加上符号位正好 11应用层意义-- 用于格式化对齐CREATETABLEproducts(idINT(10)ZEROFILL,-- 商品编号统一显示为10位priceDECIMAL(10,2));-- 插入后显示0000000001四、总结11 不是存储长度不代表能存 11 位数是显示宽度配合 ZEROFILL 时补零显示数值范围不变int 永远是 4 字节,范围固定一句话理解int(11)就像给数字穿衣服,衣服大小显示宽度不影响身体大小数值范围,只是决定看起来怎么打扮是否补零。