数值类型
MySQL数据类型 | 大小 | 范围(有符号) | 范围(无符号)unsigned | 用途 |
---|---|---|---|---|
tinyint(m) | 1个字节 | -128,127 | 0,255 | 最小整数值(4) |
smallint(m) | 2个字节 | -32768,32767 | 0,65 535 | 小整数值(6) |
mediumint(m) | 3个字节 | -8 388 608,8 388 607 | 0,16 777 215 | 中整数值(9) |
int(m) | 4个字节 | -2 147 483 648,2 147 483 647 | 0,4 294 967 295 | 大整数值(11) |
bigint(m) | 8个字节 | -9 233 372 036 854 775 808, 9 223 372 036 854 775 807 | 0,18 446 744 073 709 551 615 | 超大整数值(20) |
M值说明
-
整数型的数值类型已经固定了存值范围,占用空间容量:有符号整型和无符号整型都是固定的,而M值并不代表可以存储的数值字符长度,它代表的是数据在显示时显示的最小长度;
-
没有zerofill,M值就是无用的:当存储的字符长度小于M值时,只有在设置了zerofill用0来填充,才能够看到效果。
-
当存储的字符长度超过M值时,没有任何的影响,只要不超过数值类型限制的范围;
总结
int(11),tinyint(1),bigint(20),后面的数字,不代表占用空间容量。而代表最小显示位数。这个数字基本没有意义,除非你对字段指定zerofill(前面补0)。
所以我们在设计mysql数据库时,建表时,MySQL会自动分配长度:
- tinyint(4)
- smallint(6)
- mediumint(9)
- int(11)
- bigint(20)
所以,就用这些默认的显示长度就可以了。
不用再去自己填长度,比如设置int(10)、tinyint(1)之类的,基本没用。而且导致表的字段类型多样化。