史上最简单的 MySQL 教程(二十)「数据的高级操作 之 主键冲突」

温馨提示:本系列博文已经同步到 GitHub,地址为「mysql-tutorial」,欢迎感兴趣的童鞋StarFork,纠错。

数据的高级操作

数据的操作,无外乎增删改查

新增数据的基本语法为:

  • insert into + 表名 + [(字段列表)] + values (值列表);

在数据插入的时候,假设主键对应的值已经存在,则插入失败!这就是主键冲突。

主键冲突

当主键存在冲突(duplicate key)的时候,可以选择性的进行处理,即更新或替换。

下面,以表my_class为例,进行测试:

1

其中,grade为主键。

第一种情况:主键冲突,进行更新操作。

  • 基本语法:insert into + 表名 + [(字段列表:包含主键)] + values (值列表) on duplicate key update 字段 = 新值;

执行如下 SQL 语句,进行测试:

-- 测试主键冲突的 SQL 语句
insert into my_class values ('PM3527','B315');
2

如上图所示,当主键已经存在的时候,产生主键冲突。再执行如下 SQL 语言,解决主键冲突的问题:

-- 当主键冲突的时候,进行更新操作
insert into my_class values ('PM3527','B315')
-- 冲突处理
on duplicate key update
-- 更新主键值
room = 'B315';
3

第二种情况:主键冲突,选择替换操作。

  • 基本语法:replace insert into + 表名 + [(字段列表:包含主键)] + values (值列表);

执行如下 SQL 语句,进行测试:

-- 测试主键冲突的 SQL 语句
insert into my_class values ('PM3528','B215');
4

如上图所示,当主键已经存在的时候,产生主键冲突。再执行如下 SQL 语言,解决主键冲突的问题:

-- 当主键冲突的时候,进行替换操作
replace into my_class values ('PM3528','B215');
5

通过以上两种情况的演示,当再发生主键冲突的时候,咱们已经可以从容应对并解决啦!


温馨提示:符号[]括起来的内容,表示可选项;符号+,则表示连接的意思。


———— ☆☆☆ —— 返回 -> 史上最简单的 MySQL 教程 <- 目录 —— ☆☆☆ ————

原创声明,本文系作者授权云+社区-专栏发表,未经许可,不得转载。

如有侵权,请联系 zhuanlan_guanli@qq.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Django Scrapy

倒排索引

主楼搜索引擎的主流算法 倒排索引源于实际应用中需要根据属性的值来记录,这种只能怪索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录开...

3376
来自专栏我的博客

PHP Mysql函数汇总表

mysql_affected_rows — 取得前一次 MySQL 操作所影响的记录行数mysql_change_user —  改变活动连接中登录的用户mys...

3195
来自专栏Python攻城狮

数据库 - MySQL1.MySQL内容简介2.安装管理(linux)window下安装Mysql3.数据的完整性4.脚本命令操作5.数据库查询

MySQL数据库,是当前应用非常广泛的一款关系型数据库 MySQL官网 数据库排名

943
来自专栏FreeBuf

移位溢注:告别靠人品的偏移注入

在Access数据库类型注入的时候,我们获取不到列名(前提是有表名),一般会选择使用偏移注入,但是这种注入方式往往借助的是个人的人品,且步骤繁琐。本文中我们研究...

1906
来自专栏猿天地

mongodb java操作语法

之前都是通过spring-data框架来对mongodb操作,当然在很多老的项目中,由于jar包版本的问题,不太好升级到最新的版本,往往会采用mongodb-d...

25110
来自专栏维C果糖

史上最简单的 MySQL 教程(十六)「列属性 之 唯一键」

唯一键:每张表往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键就是用来解决表中多个字段需要具有唯一性的问题。

3255
来自专栏Grace development

集成TP分页类代码

472
来自专栏python成长之路

mysql在ubuntu中的操作笔记(详)

1334
来自专栏xiaoheike

mysql 唯一索引与null.md

mysql 的唯一索引要求所有参与的列都不能够为 null 值,如果唯一索引中的任何一个元素含有 null 值,则唯一约束将不起作用。

742
来自专栏Django Scrapy

python实现mysql数据同步到elasticsearch

环境: python3.5 支持包: pymysql elasticsearch_dsl 安装 pymysql elasticsearch_dsl p...

3475

扫描关注云+社区