mysql中 signed 与 unsigned  详解

本文详细阐述了MySQL中有符号(signed)和无符号(unsigned)的区别,主要体现在数值约束和范围扩大上。unsigned用于限制数值为非负,扩展了整型数据的可用范围。同时,介绍了zerofill特性,它会自动使用无符号并用0填充不足位数的部分。在实际应用中,unsigned常用于不会出现负值的字段,如身高、体重等,而zerofill则适用于需要固定位数展示的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql中 有符号(signed), 无符号(unsigned )与 零填充(zerofill) 详解

   三者区别

unsigned 是mysql自定义的类型,表示无符号数值即非负数。signed为整型默认属性。

区别1:起到约束数值的作用。

区别2:可以增加数值范围。

以tinyint为例,它的取值范围-128-127,加不加signed都默认此范围。加上unsigned表示范围0-255,其实相当于把负数那部分加到正数上。例如身高、体重或者年龄等字段一般不会为负数,此时就可以设置一个 UNSIGNED ,不允许负数插入。

      zerofill零填充会自动使用无符号位。零填充指的是位数固定,如果数值长度不足字段类型的长度,则使用0来填充。比如zerofill 的int数值,设为123,数据库中会显示0000000123;

   应用场景

mysql中数值有:五种整型(tinyint、smallint、mediumint、integer和bigint),三种浮点型(float、double和decimal)。整型数值可定义为unsigned,使列的取值为0及以上范围。

但是浮点类型不能使用unsigned,其取值范围也与整型不同。以int和float为例:两者都是4个字节,32位。

整型 int =1个符号位+31个指数位,取值范围为2^-31——2^31-1。

但是浮点型float =1个符号位+8个指数位+23个尾数位,取值采用的是IEEE 754标准,具体的规则这里不做介绍了。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值