今天有个朋友问我int(2)和int(10)有什么区别,难道是指字段的长度吗,答案肯定是否定的。
我们知道在MySQL中int占4个字节,那么无符号的int,最大值就是2^32-1,但是具体int括号后的数字代表什么意思,我们测试来看。
CREATE TABLE `zt` (
`id` int(2) unsigned NOT NULL,
`value` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
我们写入数据库并插入几行数据
执行查询语句
select * from zt
我们看出查询的结果都是正常的。
CREATE TABLE `zt` (
`id` int(2) unsigned zerofill NOT NULL,
`value` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
在表加上了zerofill后,我们发现结果就不一样了。
总结:
int后面的数字只是表示字段的长度,一般加上zerofill后,如果实际数据值的长度没有num大,会通过0补充