MYSQL 中的 int(11) 到底代表什么意思?_字段类型

  • 各 INT 类型无符号最大值用单位表示:

INT 类型

无符号最大值用单位表示

TINYINT

255

SMALLINT

65535

MEDIUMINT

1677 万

INT

42 亿

BIGINT

1844 亿亿,18446兆(一万亿等于一兆,亿亿就是:十兆;)

  • int(11) 的含义:
  1. 11 代表的并不是长度,而是字符的显示宽度;
  2. 在字段类型为int时,无论你显示宽度设置为多少,int类型能存储的最大值和最小值永远都是固定的
  3. 如果没有 ZEROFILL 属性,括号内 int(11) 这个11的数字是毫无意义;比如:​​INT(4) UNSIGNED ZEROFILL​​​,数据库内部存储是​​1​​​,​​0001​​只是设置了ZEROFILL属性的一种格式化输出而已
  4. 推荐自增主键使用 INT UNSIGNED 类型,不建议使用 BIGINT

当int字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,为什么会有无符号的限制呢,是因为ZEROFILL属性会隐式地将数值转为无符号型,因此不能存储负的数值。

注意:如果用navicate软件查询出来并不会显示左边的0,但把数据导出时可看到真实的数据,猜测是软件对数据格式进行了处理

  • 自动填充零(ZEROFILL)的常用场景
  1. 补零“流水号”的生成
  2. 月份或日期前补0