数据准备
DROP TABLE IF EXISTS user1;
CREATE TABLE `user1` (
`id` INT NOT NULL AUTO_INCREMENT,
`name` VARCHAR(45) NULL,
`age` INT(3) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `u_name` (`name`));
insert into user1(`name`, `age`) values ('zhangshan', 18), ('lisi', 19);
1. INSERT IGNORE
MySQL尝试插入所有数据,但对于违反唯一索引的重复数据行,将忽略插入操作
insert ignore into user1(`name`, `age`)
values ('zhangshan', 20), ('wangwu', 20);
2. REPLACE INTO
MySQL尝试插入数据,如果遇到唯一索引冲突,则会删除已存在的行,然后将新行插入,实现替换的效果
replace into user1(`name`, `age`)
values ('zhangshan', 20), ('yanlp', 21);
3. INSERT … ON DUPLICATE KEY UPDATE
MySQL尝试插入数据,如果遇到唯一索引冲突,可以指定更新现有行的操作
insert into user1(`name`, `age`)
values ('zhangshan', 25), ('wangwu', 26), ('test', 27)
ON DUPLICATE KEY UPDATE age = VALUES(age);