当前位置: 首页 > news >正文

mysql replace insert update delete

目录
  • mysql replace && insert && update && delete
    • replace

mysql replace && insert && update && delete

replace

我们在使用数据库时可能会经常遇到这种情况。如果一个表在一个字段上建立了唯一索引,当我们再向这个表中使用已经存在的键值插入一条记录,那将会抛出一 个主键冲突的错误。
当然,我们可能想用新记录的值来覆盖原来的记录值。如果使用传统的做法,必须先使用DELETE语句删除原先的记录,然后再使用 INSERT插入新的记录。而在MySQL中为我们提供了一种新的解决方案,这就是REPLACE语句。使用REPLACE插入一条记录时,如果不重 复,REPLACE就和INSERT的功能一样,如果有重复记录,REPLACE就使用新记录的值来替换原来的记录值。
使用REPLACE的最大好处就是可以将DELETE和INSERT合二为一,形成一个原子操作。这样就可以不必考虑在同时使用DELETE和INSERT时添加事务等复杂操作了。
在使用REPLACE时,表中必须有唯一索引,而且这个索引所在的字段不能允许空值,否则REPLACE就和INSERT完全一样的。
在执行REPLACE后,系统返回了所影响的行数,如果返回1,说明在表中并没有重复的记录,如果返回2,说明有一条重复记录,系统自动先调用了 DELETE删除这条记录,然后再记录用INSERT来插入这条记录。如果返回的值大于2,那说明有多个唯一索引,有多条记录被删除和插入。

//插入一条数据,注意可以设置title_id为主键,不设置主键,当插入时会覆盖多条
REPLACE INTO xiaoshuo (title_id,title,word) VALUES(20230812, '主题', '正文');//插入多条记录
REPLACE INTO xiaoshuo(title_id,title,word)
VALUES(20230812, '主题1', '正文1'), (20230813, '主题2', '正文2');//也可以使用SET语句
REPLACE INTO users SET title_id = 20230813, title = '主题2', word = '正文2';
http://www.lryc.cn/news/136889.html

相关文章:

  • 实现SSM简易商城项目的商品查询功能
  • 视频批量剪辑矩阵分发系统源码开源分享----基于PHP语言
  • 亚信科技AntDB数据库通过GB 18030-2022最高实现级别认证,荣膺首批通过该认证的产品之列
  • 第11章 优化多线程应用程序
  • 分布式下的session共享问题
  • webrtc的Sdp中的Plan-b和UnifiedPlan
  • LLM-Rec:基于提示大语言模型的个性化推荐
  • microsoft -en - us 无法卸载
  • day43参与通信的服务器
  • K8S如何部署ZooKeeper以及如何进行ZooKeeper的平滑替换
  • Leetcode刷题之1658. 将 x 减到 0 的最小操作数
  • 海外网红营销中的创新技术与趋势:AI、AR和VR的应用探索
  • Vant 4.6.4发布,增加了一些新功能,并修复了一些bug
  • Linux权限维持—Strace监控Alias别名Cron定时任务
  • 微服务中间件--统一网关Gateway
  • Fabric.js 元素选中状态的事件与样式
  • 数据通信——传输层(UDP)
  • Python(八十六)字符串的编码与解码
  • Android OkHttp 源码浅析二
  • Python(八十四)字符串的切片操作
  • leetcode-506.相对名次-day17
  • 【QT】绘制旋转等待
  • Electron学习3 使用serialport操作串口
  • 激活函数总结(十七):激活函数补充(PELU、Phish)
  • [bug日志]springboot多模块启动,在yml配置启动端口8081,但还是启动了8080
  • 【每日易题】七夕限定——单身狗问题以及进阶问题位运算法的深入探讨
  • 消息队列前世今生 字节跳动 Kafka #创作活动
  • 『SEQ日志』在 .NET中快速集成轻量级的分布式日志平台
  • Django会话技术
  • Tree of Thoughts: Deliberate Problem Solving with Large Language Models