没区别例子

创建表int_test1

create table int_test1 (id int not null AUTO_INCREMENT, t0 int, st1 int(1) ,st10 int(10) ,st100 int(100) ,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

插入数据

INSERT into int_test1(t0) values(6);
INSERT into int_test1(st1) values(6);
INSERT into int_test1(st10) values(6);
INSERT into int_test1(st100) values(6);

navicat查看数据

mysql的int和int(n)的区别_创建表

mysql命令行查看数据

mysql的int和int(n)的区别_mysql命令_02

区别

从这个例子看,好像没啥区别

 

区别例子

表机构

create table int_test2 (id int not null AUTO_INCREMENT, t0 int,t1 int(1),t10 int(10),t100 int(100),
st0 int zerofill,st1 int(1) zerofill,st10 int(10) zerofill,st100 int(100) zerofill,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

从创建表的脚本看,有啥区别,st开头的字段都加了zerofill

插入数据

INSERT into int_test2(t0) values(6);
INSERT into int_test2(t1) values(6);
INSERT into int_test2(t10) values(6);
INSERT into int_test2(t100) values(6);
INSERT into int_test2(st0) values(6);
INSERT into int_test2(st1) values(6);
INSERT into int_test2(st10) values(6);
INSERT into int_test2(st100) values(6);

navicat查看数据

mysql的int和int(n)的区别_创建表_03

咋一看好像和上面也沒啥区别啊,这个有可能是navicat的bug(看下面命令行就知道区别了)

mysql命令行查看数据

mysql的int和int(n)的区别_创建表_04

效果出来了,也就是zerofill修饰int的时候,n,显示几位数字 (TINYINTSMALLINT、MEDIUMINT、BIGINT也是同理)

从上面看UNSIGNED INT 默认的n是10