MySQL int 类型长度有啥用?
数值类型设置的长度并不影响该数值字段的取值范围 所以正常来说没什么用。
其长度只有在设置 ZEROFILL
即 “填充零” 后才有所意义。
比如 int(3) 存储 1 ,填充零时会填充为 001。
包括以下数值类型字段:
类型 | 字节 | 有符号取值范围 | 无符号取值范围 | 默认宽度 |
---|---|---|---|---|
TINYINT | 1 | -128 ~ 127 | 0 ~ 255 | 4 |
SMALLINT | 2 | -32768 ~ 32767 | 0 ~ 65535 | 6 |
MEDIUMINT | 3 | -8388608 ~ 8388607 | 0 ~ 16777215 | 9 |
INT | 4 | -2147483648 ~ 2147483647 | 0 ~ 4294967295 | 11 |
BIGINT | 8 | -9223372036854775808 ~ 9223372036854775807 | 0 ~ 18446744073709551615 | 20 |
此处默认宽度应该是按 无符号最大值位数 + 1 来计算
而其他 char 和 varchar 是实实在在表示字节大小范围,在UTF-8编码下,char(1)则表示只能存1个字符(汉字),char(5)则表示只能存5个字符(汉字)