mysql 中unsigned详解

unsigned 是MYSQL自定义的类型,非标准SQL。用途1是起到约束数值的作用,2是可以增加数值范围(相当于把负数那部分加到正数上)。不过少用,不方便移植。

image.png

unsigned 为“无符号”的意思

unsigned 既为非负数,用此类型可以增加数据长度!

例如如果 tinyint最大是127,那 tinyint unsigned 最大 就可以到 127 * 2

unsigned 属性只针对整型,而binary属性只用于char 和varchar。

UNSIGNED 可用来约束数据的范围,例如有些年龄这种值一般能是负数,那么就可以设置一个 UNSIGNED ,这样可以不允许负数插入

看起来这是一个不错的属性选项,特别是对于主键是自增长的类型,因为一般来说,用户都希望主键是非负数。然而在实际使用中,UNSIGNED可能会带来一些负面的影响:计算可能会出现非预期结果:

select a-b from table1;

但预期结果是负数时,则实际结果可能是个很大的值,甚至sql执行报错

当(a-b)在where子句后时也会出现相同的情况


© 版权声明
THE END