- 各 INT 类型无符号最大值用单位表示:
INT 类型 | 无符号最大值用单位表示 |
---|---|
TINYINT | 255 |
SMALLINT | 65535 |
MEDIUMINT | 1677 万 |
INT | 42 亿 |
BIGINT | 1844 亿亿,18446兆(一万亿等于一兆,亿亿就是:十兆;) |
- int(11) 的含义:
- 11 代表的并不是长度,而是字符的显示宽度;
- 在字段类型为int时,无论你显示宽度设置为多少,int类型能存储的最大值和最小值永远都是固定的
- 如果没有 ZEROFILL 属性,括号内 int(11) 这个11的数字是毫无意义;比如:
INT(4) UNSIGNED ZEROFILL
,数据库内部存储是1
,0001
只是设置了ZEROFILL属性的一种格式化输出而已(出处:https://www.cnblogs.com/olinux/p/5180543.html) - 推荐自增主键使用 INT UNSIGNED 类型,不建议使用 BIGINT
当int字段类型设置为无符号且填充零(UNSIGNED ZEROFILL)时,当数值位数未达到设置的显示宽度时,会在数值前面补充零直到满足设定的显示宽度,为什么会有无符号的限制呢,是因为ZEROFILL属性会隐式地将数值转为无符号型,因此不能存储负的数值。
注意:如果用navicate软件查询出来并不会显示左边的0,但把数据导出时可看到真实的数据,猜测是软件对数据格式进行了处理
- 自动填充零(ZEROFILL)的常用场景(出处:https://yq.aliyun.com/articles/43291):
- 补零“流水号”的生成
- 月份或日期前补0