MySQL中定义数值类型字段,让输入长度是怎么回事

在MySQL中创建表时,数值类型的长度并不直接决定取值范围。例如,tinyint长度设置为10并不会改变其0~255的取值限制。相反,长度在数值类型中主要影响显示效果,如bigint类型长度设置为20,存储1时会默认左侧填充0。因此,单纯设置数值类型的长度并无实际意义,应根据实际需求选择合适的数值类型。
摘要由CSDN通过智能技术生成

问题

在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)。

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值