int(2)中的2代表什么

今天有个朋友问我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

我们写入数据库并插入几行数据
int(2)中的2代表什么_第1张图片
执行查询语句

select * from zt

int(2)中的2代表什么_第2张图片
我们看出查询的结果都是正常的。

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补充

你可能感兴趣的:(数据库,mysql,算法,数据结构)