后端岗位面试题更新 2026-08-05

在 MySQL 中,定义整数列时使用的 int(11) 这个写法,括号里面的数字 11 具体起到什么作用?

后端开发技术原理MySQL

考察说明

考查候选人是否理解 MySQL 整数类型显示宽度的真实含义及其与存储和取值范围的关系。

回答思路

  1. 【回答框架 1】在 MySQL 中,int(11) 中的 11 是显示宽度(display width),它不影响存储空间,也不限制取值范围。int 类型总是占用 4 个字节,取值范围为 -2147483648 到 2147483647(有符号)或 0 到 4294967295(无符号)。
  2. 【回答框架 2】显示宽度主要用于配合 zerofill 属性使用,当列被定义为 int(11) zerofill 时,如果数值不足 11 位,则在左侧用零填充,使显示结果达到 11 位。如果没有 zerofill,显示宽度不会影响查询结果的显示格式。
  3. 【回答框架 3】显示宽度在 MySQL 8.0 中已废弃,不再显示在表结构中,也不影响实际使用。在 MySQL 5.7 及更早版本中,如果不指定显示宽度,默认值会随类型不同而不同,但 int 默认显示宽度为 11。
  4. 【回答框架 4】显示宽度与 int 的可存储值范围无关,即使定义为 int(1),仍可存储超过 9 的数字。实际开发中建议直接使用 int 或 int unsigned,以避免误解。
  5. 【关键点 1】int(11) 中的 11 是显示宽度,不是存储长度。
  6. 【关键点 2】显示宽度不影响 int 的存储空间(4字节)和取值范围的上下限。
  7. 【关键点 3】显示宽度仅在有 zerofill 属性时才有实际效果,用于补零展示。
  8. 【关键点 4】MySQL 8.0 起废弃显示宽度,int(11) 与 int 等价。
  9. 【易错点 1】误认为 int(11) 限制了可存储的最大位数,实际 int 范围固定。
  10. 【易错点 2】误以为显示宽度决定存储空间,实际存储空间固定 4 字节。
  11. 【易错点 3】忽略 zerofill 的前提,没有 zerofill 时显示宽度不影响输出。