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

Sherwin.Wei Lv7

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

回答重点

在 MySQL 中,int(11) 中的 11 表示显示宽度,并不影响存储的大小或数值范围。具体来说:

  • 显示宽度:当使用 ZEROFILL 属性时,int(11) 表示如果数值的位数少于 11 位,则会在前面填充零。例如,数值 42 将显示为 00000000042。不使用 ZEROFILL 时,显示结果是 42(前面有九个空格)
  • 存储大小int 类型始终占用 4 字节(32 位),可以表示的范围是从 -2,147,483,6482,147,483,647

所以,int(11) 中的数字与整数的大小无关,只是显示格式的定义。这个配置主要是为了在查询结果中保持一致的显示格式,方便阅读和理解,但实际业务上基本用不到这个。

扩展知识

MySQL 8.0 显示宽度的变化

MySQL 8.0 版本中,整数类型的显示宽度(例如 INT(11) 中的 11)被正式弃用。即定义的显示宽度不再影响任何存储或比较操作,显示宽度的设置被忽略

虽然显示宽度本身被弃用,但仍然可以使用 ZEROFILL 属性来实现零填充效果。使用 ZEROFILL 时,数字会在左侧填充零以达到特定的宽度。

如何使用 ZEROFILL

直接在数据类型后加上 ZEROFILL 属性即可。

1
2
3
4
CREATE TABLE example (
id INT(5) ZEROFILL,
quantity INT(3) ZEROFILL
);
Comments