对已有的表字段if_delete修改设置默认值,会影响原来数据中为null的字段数据吗?

发布时间 2023-05-22 16:56:02作者: ldlei
1.新建表 t_user
CREATE TABLE `t_user` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `age` int(11) NOT NULL,
  `male` varchar(100) NOT NULL,
  `height` int(11) NOT NULL,
  `if_delete` tinyint(1),
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1425357 DEFAULT CHARSET=utf8;

 2.插入数据

INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (1, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (2, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (3, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (4, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (5, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (6, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (7, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (8, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (9, '张三', 19, '1', 180, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (10, 'liuss', 111, '11', 1601, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (11, '1', 1, '1', 1, NULL);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (13, 'liu', 11, '1', 160, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (14, 'liu', 11, '1', 160, 0);
INSERT INTO `test`.`t_user`(`id`, `name`, `age`, `male`, `height`, `if_delete`) VALUES (15, 'liu', 11, '1', 160, 1);

3.可以看到id=11的数据 if_delete字段是null
修改 if_delete字段的默认值为0:

ALTER TABLE t_user  MODIFY COLUMN if_delete tinyint(1) DEFAULT '0' COMMENT '是否删除 0-否 1-是';

 

查看表的DDL 

 

 设置成功!

查看t_user表的数据:会发现id=11的if_delete字段依旧为null(由此可得 修改字段的默认值为已有数据没有影响)。


新增一条数据:

insert into t_user(id,name,age,male,height) VALUES(16,'test',11,'1',160);

 

默认值数据生效