Yihui’s Blog

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

日期:2026-07-11
难度:简单
标签:#面试 #MySQL #数据类型

一句话答案

int(11) 中的 11 是历史上的显示宽度,不是存储字节数、取值范围或“最多 11 位数字”;INT 始终是 4 字节,MySQL 8.0 已弃用整数显示宽度。

面试口语版

很多人误以为 int(11) 能存 11 位,实际上 INT 的存储固定为 4 字节,有符号范围约 -21 亿到 21 亿,(11) 不改变范围。早期显示宽度主要配合 ZEROFILL 在客户端展示时补零,例如 INT(5) ZEROFILL 显示为 00042;它不限制插入位数。新建表应按业务选择 TINYINT/SMALLINT/INT/BIGINT 和是否 UNSIGNED,不要再用显示宽度表达长度。

关键细节

  • INT 有符号:-2^31 到 2^31-1;UNSIGNED:0 到 2^32-1。
  • 整数显示宽度在 MySQL 8.0.17 起已弃用(TINYINT(1) 的布尔习惯是另一层应用语义)。

面试官追问

  1. INT UNSIGNED 范围是多少?
  2. TINYINT(1) 真的是 Boolean 吗?
  3. ID 该如何选择 INT 还是 BIGINT?

学习清单

  • 按“字节数、signed/unsigned、业务范围”选整数类型。
维护与整理 · Yihui在 GitHub 上编辑

继续阅读

浏览全部文章

SQL与NoSQL有什么区别?MySQL和MongoDB如何选型?实际项目中如何选择?

日期:2026-09-27 标签:#面试 #MySQL #数据库 难度:简单 来源:牛面 MySQL 题库 答案说明:独立整理(站内题目标记为 VIP,未读取会员答案) 一句话答案 MySQL与MongoDB的主要差异在数据模型、事务边界、查询方式和模式演化;按业务访问模式和一致性需求选型。 面试口语版(约 60…

阅读全文