在 MySQL 中,int(11) 中的 11 并不表示存储数据时的字节数或范围,而是用来指定显示宽度的。
显示宽度只有在结合 ZEROFILL 时才会产生效果。
在 MySQL 中,ZEROFILL 是一个用于整数类型字段的属性,它会在数字不足指定显示宽度时,用零填充数字的前导部分,确保输出的宽度达到指定的长度。通常,ZEROFILL 与整数类型(如 INT、BIGINT、TINYINT 等)配合使用。
在 MySQL 8.0 中,显示宽度的效果被取消了,因此 int(11) 和 int 没有区别,ZEROFILL 依然可以使用,但显示宽度的影响已不再有效。如果你需要在 MySQL 8.0 及以上版本中控制显示格式,通常需要在应用层来处理这些格式化工作。