13.MySQL解决主键冲突

1.准备

创建相关表

CREATE TABLE emp
(
  empno INT PRIMARY KEY,
  ename VARCHAR(10),
  sal INT
) ENGINE = INNODB DEFAULT CHARSET = utf8;

INSERT INTO emp VALUES (1,'smith',2800);
INSERT INTO emp VALUES (2,'allen',1500);
INSERT INTO emp VALUES (3,'ward',3500);
INSERT INTO emp VALUES (4,'jones',1300);
INSERT INTO emp VALUES (5,'martin',1600);
INSERT INTO emp VALUES (6,'blake',3000);

2.方式一:主键冲突更新

格式:
INSERT [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (字段列表) ON DUPLICATE KEY UPDATE 字段名1 = 新值1[,字段名2 = 新值2] …;

INSERT INTO emp (empno,ename,sal) VALUES (2,'allen2',3000)
ON DUPLICATE KEY UPDATE ename = 'allen2',sal = 3000;

在这里插入图片描述

3.主键冲突替换

格式:
REPLACE [INTO] 数据表名 [(字段列表)] {VALUES | VALUE} (值列表) [, (值列表)] …;

REPLACE INTO emp (empno,ename,sal) VALUES (3,'ward2',3600);

在这里插入图片描述

4.区别

REPLACE语句与INSERT语句的使用类似,区别在于前者每执行一次就会发生两个操作:删除和插入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值