问题
在mysql建表时,对于数值类型,竟然需要设置数据长度?
难道可以通过设置数值长度,来控制该字段的取值范围(最大值)吗?
经过测试:
varchar类型字段 设置长度10,那么它最大长度就是10位。YES
tinyint类型字段 设置长度10,那么它最大能是10位数吗?不可以
bitint类型字段 设置长度1,那么它能存19位数吗?可以
bigint -2^63 (-9223372036854775808) ~ 2^63-1 (9223372036854775807)整数 8个字节
tinyint 0~255整数 1个字节
int -2^31 (-2,147,483,648) ~ 2^31 - 1 (2,147,483,647)整数 4个字节
可以看的出来,数值类型的长度,并不能代表该字段的取值范围。
数据长度,取值范围
对于字符串来说,长度就是长度。
但是数值类型,长度往往还意味着取值范围(最大值)。
取值范围从出生就是定死的,就跟兰博基尼一样,由不得你做主。
在设计字段的时候,单纯的设置数值类型的长度是没有意义的。因为它并不代表最大值\最小值。
它仅仅是一种展示效果,需要搭配填充零一起使用。
如图:
测试
比如bigint类型 长度设置为20,你要存入的数据为1,当存到数据库中显示效果就是00000000000000000001(自左向右填充0)。