身为程序员,拿事实说话拿代码说话最直观了,show the code
CREATE TABLE `tinyinttest` (
`id` int NOT NULL,
`a` TINYINT(1) NOT NULL DEFAULT 0,
`b` TINYINT(2) NOT NULL DEFAULT 0,
`c` TINYINT(1) ZEROFILL NOT NULL DEFAULT 0,
`d` TINYINT(2) ZEROFILL NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
);
插入数据
INSERT INTO tinyinttest(a,b,c,d) VALUES (0,0,0,0);
INSERT INTO tinyinttest(a,b,c,d) VALUES (1,1,1,1);
INSERT INTO tinyinttest(a,b,c,d) VALUES (2,2,2,2);
INSERT INTO tinyinttest(a,b,c,d) VALUES (11,11,11,11);
INSERT INTO tinyinttest(a,b,c,d) VALUES (99,99,99,99);
INSERT INTO tinyinttest(a,b,c,d) VALUES (120,120,120,120);
TINYINT(1),TINYINT(2)中的1和2指得是数字的显示宽度。TINYINT(1)和TINYINT(2)在取值范围上没有区别,都是TINYINT的范围。
MySQL官方文档地址
从查询结果可以看出,如果字段没有指定zerofill属性,那么a,b两列没有区别。
只有在指定了zerofill属性的时候,TINYINT(1)和TINYINT(2)才能看出差别,也就是c和d。