
一、开始准备工作
新建USERS表及插入测试数据:
DROP TABLE IF EXISTS users;
CREATE TABLE users(
id INT PRIMARY KEY,
name VARCHAR(10),
sal INT
) ENGINE = INNODB DEFAULT CHARSET = utf8;
INSERT INTO users VALUES (1,'xmith',2800);
INSERT INTO users VALUES (2,'pllen',1500);
INSERT INTO users VALUES (3,'wopd',3500);
INSERT INTO users VALUES (4,'zones',1300);
INSERT INTO users VALUES (5,'yhrtin',1600);
INSERT INTO users VALUES (6,'xlakn',3000);
select * from users;
结果如下图:
二、冲突解决方式
新建表及插入数据:
1) 主键冲突更新
INSERT [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (字段列表) ON DUPLICATE KEY UPDATE 字段名1 = 新值1[,字段名2 = 新值2] …;
INSERT INTO users(id,name,sal) VALUES (3,'wopd5',6000)ON DUPLICATE KEY UPDATE name = 'wopd5',sal = 6000;
select * from users;
结果如下图:
2) 主键冲突替换
REPLACE [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (值列表) [, (值列表)] …;
REPLACE INTO users(id,name,sal) VALUES (5,'yhrtin5',3600);
select * from users;
结果如下图:
无冲突时直接插入数据,插入后数据结果如下图:
REPLACE INTO users(id,name,sal) VALUES (7,'ruiop',3600);

三、差别
REPLACE语句与INSERT语句的使用相当,差别在于REPLACE语句每执行一次就会发生两个操作(删除记录和插入记录)。
关注我们,精彩属于你





