mysql 数据库中要加入字段,并设置默认值为零,数据库设计原则所占的储存空间越少越好,够用就行,基于节省存储空间的考虑所以用了tinyint类型,
int类型占4个字节,tinyint占1个字节,于是设计了tinyint的字段类型,在长度的填写上写了2,然后设置了填充零的勾选,
于是在dll里面channel` tinyint(2) unsigned zerofill DEFAULT '00'
问题来了,2指的是存储宽度,不表示存储长度。如果列制定了zerofill 就会用0填充显示,例如tinyint(2)指定后2就会显示为02,自动左边补零。
tinyint有固定范围值,带符号的范围是-128到127。无符号的范围是0到255。
琢磨好上面两句话,发现设置tinyint(2)对我来说是画蛇添足了,tinyint已经满足我的使用。刚开始设置的时候把存储宽度和存储长度概念给弄混淆了。
而且在tinyint的使用中,MYSQL中没有布尔类型,但是如果你定义了布尔类型,它会自动给你转换成Tinyint。
保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),
MySQL里有四个常量:true,false,TRUE,FALSE,它们分别代表1,0,1,0。
也就是说如果需要建立一张大量存储0和1的字段的表,可以充分考虑tinyint了。
科普记录一下:
类型 大小 范围(有符号) 范围(无符号) 用途
TINYINT 1字节 (-128,127) (0,255) 小整数值
SMALLINT 2 字节 (-32 768,32 767) (0,65 535) 大整数值
MEDIUMINT 3 字节 (-8 388 608,8 388 607) (0,16 777 215) 大整数值
INT或INTEGER 4 字节 (-2 147 483 648,2 147 483 647) (0,4 294 967 295) 大整数值
BIGINT 8 字节 (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) (0,18 446 744 073 709 551 615) 极大整数值