iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中ON DUPLICATE key update的使用
  • 849
分享到

MySQL中ON DUPLICATE key update的使用

MySQLONDUPLICATEkeyupdate 2023-05-25 10:05:00 849人浏览 安东尼
摘要

目录一、主键索引、唯一索引和普通索引的关系二、实战操作1.ON DUPLICATE key update使用介绍:2.ON DUPLICATE key update测试样例:三、总结一、主键索引、唯一索引和普通索引的关系

一、主键索引、唯一索引和普通索引的关系

主键索引
数据库中定义一个主键将自动创建主键索引,主键索引是唯一索引的特殊类型。主键索引要求主键中的每个值是唯一的。当在查询中使用主键索引时,它还允许快速访问数据。主键索引不能为空。每个表只能有一个主键

唯一索引
不允许两行具有相同的索引值。但可以都为NULL。 如果现有数据中存在重复的键值,则数据库不允许将新创建的唯一索引与表一起保存。当新数据和表中的键值重复时,数据库会拒绝接受此数据。每个表可以有多个唯一索引

普通索引
一般的索引结构,可以在条件删选时加快查询效率,索引字段的值可以重复,可以为空值

二、实战操作

1.ON DUPLICATE key update使用介绍:

有时候由于业务需求,可能需要先去根据某一字段值查询数据库中是否有记录,有则更新,没有则插入。这个时候就可以用到ON DUPLICATE key update这个sql语句了。

2.ON DUPLICATE key update测试样例:

首先创一张简单的表:

MySQL中ON DUPLICATE key update的使用

 增加以下数据:

MySQL中ON DUPLICATE key update的使用

数据包含主键(id):

insert into user (id,username,userpwd,num) values (1,"testName","testPwd",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

MySQL中ON DUPLICATE key update的使用

可以看到是根据主键来判断,如果主键重复则执行update。

加上username为唯一索引之后:

MySQL中ON DUPLICATE key update的使用

 再次执行

insert into user (id,username,userpwd,num) values (1,"testName2","testPwd2",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

MySQL中ON DUPLICATE key update的使用

可以看到还是根据id来进行判断,如果主键重复则执行update。 

测试没有id时:

insert into user (username,userpwd,num) values ("testName2","testPwd3",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

MySQL中ON DUPLICATE key update的使用

可以看到,此时是根据唯一索引来进行判断 ,如果唯一索引重复则执行update。

说明优先级:主键>唯一索引

此时测试没有主键和唯一索引重复时的情况:

insert into user (username,userpwd,num) values ("testName4","testPwd4",10)
ON DUPLICATE KEY UPDATE
username = VALUES(username),
userpwd = VALUES(userpwd)

MySQL中ON DUPLICATE key update的使用

 可以发现,此时是新增一条数据,说明如果主键和唯一索引都不重复的情况执行insert。

三、总结

ON DUPLICATE key update是根据索引字段是否重复来判断是否执行,如果重复则执行update,否则则执行insert。

优先级主键>唯一索引

  • 当主键重复时则执行update
  • 当主键不重复,唯一索引重复时也执行update
  • 当主键和唯一索引值都不重复才执行insert

PS:特殊情况,当主键重复执行update时,如果此时唯一索引字段与其他字段也重复则会报错

MySQL中ON DUPLICATE key update的使用

到此这篇关于Mysql中ON DUPLICATE key update的使用的文章就介绍到这了,更多相关mysql ON DUPLICATE key update内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中ON DUPLICATE key update的使用

本文链接: https://www.lsjlt.com/news/218166.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作