MySQL mysql tinyint(1) vs tinyint(2) vs tinyint(3) vs tinyint(4)
MySQL中的tinyint类型可以存储-128 ~ 127,或是0 ~ 255范围内的整数。而在定义tinyint类型时,还可以指定括号中的数字来规定该类型的宽度,数字的范围是1~4。那么,这个数字的不同究竟会带来什么影响呢?
阅读更多:MySQL 教程
tinyint(1)
当括号中为1时,表示这个tinyint类型只有1个字节的宽度,可以存储的范围是-128 ~ 127。括号中的数字即使大于1,也是没有意义的,例如,定义为tinyint(10)和定义为tinyint(1)没有区别。
tinyint(2)
括号中为2时,会占用2个字节的宽度,可以存储的范围是-32768 ~ 32767。同样地,定义为tinyint(3)或更大的数字也是没有意义的。
tinyint(3)
括号中为3时,会占用3个字节的宽度,可以存储的范围是-8388608 ~ 8388607。此时若定义为tinyint(4),同样也没有区别。
tinyint(4)
括号中为4时,会占用4个字节的宽度,此时可以存储的范围是-2147483648~2147483647。相对于tinyint(1)和tinyint(2),tinyint(3)和tinyint(4)的范围是非常大的,但实际开发中如果知道数据不会那么大,就可以使用更小的宽度来节省空间。
总结
在定义tinyint类型时,括号中的数字即代表了该类型的宽度,不同的宽度会带来不同的存储范围。但是需要注意的是,如果定义的宽度大于实际存储范围,是没有意义的,也不会带来更好的性能。因此,在设计数据表时,需要根据实际情况,选择合适的宽度来存储数据。