所谓主键冲突是指,当插入一条记录的时候,如果插入的记录的主键值,在现有的数据中已经存在,则此时,因为主键不能重复,因此就产生了“主键冲突”。
主键冲突的演示:
现有数据:
![](https://img.kancloud.cn/c5/1f/c51f5bf66c65ca746c74a3640af74220_359x133.jpg)
插入一个数据(其主键已经存在的情形):
![](https://img.kancloud.cn/95/2d/952d1f94f1170c056a60ef337db444ae_684x34.jpg)
那如果出现主键冲突,该怎么办呢?
* 办法1:忽略
——终止插入,数据不改变,语句不报错。
其语法为:
```
insert ignore into 表名 ( 字段.... ) values (值.....);
```
![](https://img.kancloud.cn/de/d8/ded832e8263d65ac9fba7f758ed9843b_727x51.jpg)
* 办法2:替换
——删除原纪录,插入新纪录。
其语法为:
```
replace into 表名 ( 字段.... ) values (值.....);
```
说明:此replace的用法跟insert一样,也可以插入新纪录,只是如果新纪录出现主键冲突,就会删除原纪录后,再插入该新纪录。
![](https://img.kancloud.cn/0c/55/0c55bcf850ebe6412834ba7aff3b829b_677x199.jpg)
* 办法3:更新
——设置为去更新原有数据(而并不插入)。
语法为:
```
insert into 表名 ( 字段.... ) values (值.....) on duplicate key update XX字段=新的值;
```
更新类似“替换”(replace),区别是:
替换:是将新的数据完整覆盖旧的数据
更新:可以预先设定需要覆盖的旧数据
![](https://img.kancloud.cn/51/c4/51c4dc1facc0b585ec85cd9956acb135_666x420.jpg)
![](https://img.kancloud.cn/3a/0e/3a0e2f3bd47178968996825da9726cdd_545x259.jpg)
- 1、数据库介绍
- 1.1.主流数据库
- 1.2.MySQL数据库概览
- 1.3.关系数据库
- 2、访问mysql数据库服务器
- 2.1.开启/关闭数据库服务
- 2.2.客户端连接数据库服务器
- 3、数据库操作
- 3.1.查看所有数据库
- 3.2.创建新数据库
- 3.3.查看数据库创建信息
- 3.4.删除现有数据库
- 3.5.修改现有数据库
- 3.6.选择(使用)某个数据库
- 4、数据表操作
- 4.1.创建数据表初步
- 4.2.查看所有数据表
- 4.3.查看数据表结构
- 4.4.查看数据表的创建语句
- 4.5.删除数据表
- 4.6.修改数据表
- 5、数据操作初步
- 5.1.插入数据
- 5.2.查询数据
- 5.3.删除数据
- 5.4.修改数据
- 6、MySQL数据类型
- 6.1.数据类型(列类型)总览
- 6.2.整型
- 6.3.小数型
- 6.4.日期时间型
- 6.5.字符串型
- 7、列属性
- 8、实体与实体的关系
- 8.1.基本概念
- 8.2.一对一关系
- 8.3.一对多关系
- 8.4.多对多关系
- 9、高级查询
- 9.1.高级查询语法概述
- 9.2.查询结果数据及select选项
- 9.3.where子句
- 9.4.mysql运算符
- 9.5.group by子句
- 9.6.having子句
- 9.7.order by子句
- 9.8.limit 子句
- 10、高级插入
- 10.1.同时插入多行记录
- 10.2.插入查询的结果数据
- 10.3.set语法插入数据
- 10.4.蠕虫复制
- 10.5.插入时主键冲突的解决办法
- 11、高级删除
- 11.1.按指定顺序删除指定数量的数据
- 11.2.truncate清空
- 12、高级更新
- 13、联合(union)查询
- 13.1.联合查询概念
- 13.2.联合查询语法
- 14、连接(join)查询
- 14.1.连接查询概述
- 14.2.交叉连接(cross join)
- 14.3.内连接(inner join)
- 14.4.外连接
- 14.5.自连接
- 15、子查询(subquery)
- 15.1.子查询的概念
- 15.2.标量子查询
- 15.3.列子查询
- 15.4.行子查询
- 15.5.表子查询
- 15.6.有关子查询的特定关键字
- 15.7.exists子查询
- 16、数据管理
- 16.1.数据备份
- 16.2.数据还原(数据恢复)
- 17、用户管理:
- 17.1.查看用户
- 17.2.创建用户
- 17.3.删除用户
- 17.4.修改/设置用户密码
- 17.5.授予用户权限
- 17.6.取消用户授权