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标准,具体的规则这里不做介绍了。

Logo

更多推荐