MySQL 中 int(11) 的 11 表示什么?
MySQL 中 int(11) 的 11 表示什么?
回答重点
在 MySQL 中,int(11) 中的 11 表示显示宽度,并不影响存储的大小或数值范围。具体来说:
- 显示宽度:当使用
ZEROFILL属性时,int(11)表示如果数值的位数少于 11 位,则会在前面填充零。例如,数值42将显示为00000000042。不使用 ZEROFILL 时,显示结果是 42(前面有九个空格) - 存储大小:
int类型始终占用 4 字节(32 位),可以表示的范围是从-2,147,483,648到2,147,483,647。
所以,int(11) 中的数字与整数的大小无关,只是显示格式的定义。这个配置主要是为了在查询结果中保持一致的显示格式,方便阅读和理解,但实际业务上基本用不到这个。
扩展知识
MySQL 8.0 显示宽度的变化
MySQL 8.0 版本中,整数类型的显示宽度(例如 INT(11) 中的 11)被正式弃用。即定义的显示宽度不再影响任何存储或比较操作,显示宽度的设置被忽略。
虽然显示宽度本身被弃用,但仍然可以使用 ZEROFILL 属性来实现零填充效果。使用 ZEROFILL 时,数字会在左侧填充零以达到特定的宽度。
如何使用 ZEROFILL
直接在数据类型后加上 ZEROFILL 属性即可。
1 | CREATE TABLE example ( |
Comments