mysql数据库中int字段长度,即int(1)和int(10)的区别

1.起因

为什么想起来看这个问题,是最近有同事问mysql的init类型的字段长度的问题,他问int(1)和int(10)是什么意思,是字段长度越大,能存储的数字越大么?咋一问,还有点懵,从惯性思维来看,确实应该是这样。那么,实际情况是什么样的呢?这里直接通过实验来试一下。

2.设置int类型的长度为1

CREATE TABLE `t_student` (
  `id` int(1) NOT NULL AUTO_INCREMENT COMMENT 'ID编号',
  `name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '学生姓名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

然后插入一条数据:

INSERT INTO t_student values(1000001,'张三');

竟然能够插入成功。
mysql数据库中int字段长度,即int(1)和int(10)的区别_第1张图片

3. 设置int类型的长度为10,并且加入zerofill参数

CREATE TABLE `t_supder_student` (
  `id` int(10) zerofill NOT NULL AUTO_INCREMENT COMMENT 'ID编号',
  `name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '学生姓名',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

然后插入一条数据

INSERT INTO t_supder_student values(1,'李四');

mysql数据库中int字段长度,即int(1)和int(10)的区别_第2张图片
我们可以看到,虽然我们插入的是1,但是显示的是1前面补充了9个0,到现在我似乎就明白了,int类型的长度不是指的能存多大的数据,而是在与zerofill联合使用的时候,可以进行0填充。

4.注意事项

以上的示例都是在MySQL Workbench上操作的。对于navcat或者其他一些客户端,查询显示的时候,会把补充的0给去掉,导致看不到真实的效果。

5.小结

int后面的数字不能表示字段的长度,int(num)一般加上zerofill,才有效果。

你可能感兴趣的:(MySql数据库,mysql的int类型,mysql的0填充)