【mysql语法糖】mysql使用一个sql实现存在更新数据,不存在插入数据

前言

  有时候我们会在项目中遇到数据插入更新问题,例如往数据库插入一条数据时候,如果数据库中存在这条数据就进行更新,如果不存在就进行插入操作,很多人的做法是分两步先进行查询,然后再进行插入操作,这样显得不够优雅,本次我们通过mysql的ON DUPLICATE KEY UPDATE 实现一次操作就可以实现插入更新。

语法介绍

  ON DUPLICATE KEY UPDATE 其中DUPLICATE 的英文语义是完全一样的,key代表唯一键,翻译过来就是如果有完全一样的的唯一键插入就使用UPDATE操作。该语法用于在执行INSERT操作时,如果遇到重复的唯一键值(即主键或唯一约束字段),就将INSERT转变为UPDATE操作,而不是抛出错误。这样可以避免因插入重复记录而引发的异常,同时实现数据的更新。其基本用法如下:

INSERT INTO table_name (column1, column2, ..., columnN)
VALUES (value1, value2, ..., valueN)
ON DUPLICATE KEY UPDATE
    columnA = valueA,
    columnB = valueB;

注释:
	1、table_name:表名
	2、column1, column2:列名
	3、value1, value2:与列对应的值
	4、columnA = valueA:要更新的字段名和字段值

示例:
1、将数据插入people表,如果有就更新,没有就插入

insert into people values (1,'你住过的屋檐',18)
ON DUPLICATE KEY UPDATE
name = '神话',
age = 30

2、执行前表数据是空的
在这里插入图片描述
3、执行sql
在这里插入图片描述
查询数据成功插入一条
在这里插入图片描述
4、再执行一次sql,预期name和age会修改而不是新增一条数据
在这里插入图片描述
符合预期,数据库中只有一条记录,并且第二次执行sql时只是进行了修改
在这里插入图片描述
结束撒花,欢迎订阅!

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值