讨人喜欢的 MySQL replace into 用法(insert into 的增强版)

在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。

在 SQL Server 中可以这样处理:

if not exists (select 1 from t where id = 1)insert into t(id, update_time) values(1, getdate())else

update t set update_time = getdate() where id = 1

那么 MySQL 中如何实现这样的逻辑呢?别着急!mysql 中有更简单的方法: replace into

replace into t(id, update_time) values(1, now());

replace into t(id, update_time) select 1, now();

replace into 跟 insert 功能类似,不同点在于:replace into 首先尝试插入数据到表中, 1. 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先删除此行数据,然后插入新的数据。 2. 否则,直接插入新数据。

要注意的是:插入数据的表必须有主键或者是唯一索引!否则的话,replace into 会直接插入数据,这将导致表中出现重复的数据。

MySQL replace into 有三种形式:

1. replace into tbl_name(col_name, ...) values(...)2. replace into tbl_name(col_name, ...) select...3. replace into tbl_name set col_name=value, ...

前两种形式用的多些。其中 “into” 关键字可以省略,不过最好加上 “into”,这样意思更加直观。另外,对于那些没有给予值的列,MySQL 将自动为这些列赋上默认值。

如何使用mysql添加更新_Mysql 存在既更新,不存在就添加(sql语句)相关推荐

  1. mysql插入删除_mysql插入、更新与删除

    数据库增删改查都是要熟练掌握的. 这部分就来看看前面3个比较简单的部分,增,删,改. 插入数据 为表的所有字段插入数据 insert into table_name (column_list) val ...

  2. mybatis mysql 批量更新_mysql批量update更新,mybatis中批量更新操作

    在日常开发中,有时候会遇到批量更新操作,这时候最普通的写法就是循环遍历,然后一条一条地进行update操作.但是不管是在服务端进行遍历,还是在sql代码中进行遍历,都很耗费资源,而且性能比较差,容易造 ...

  3. 怎么做mysql查询系统_mysql数据库系统学习(一)---一条SQL查询语句是如何执行的?...

    一.第一节:一条sql查询语句是怎样执行的 5.5.5版本以后,默认使用存储引擎为InnoDB 不使用查询缓存,MySQL8.0没有查询缓存这个功能 总体来说:MySQL分为service层和存储引擎 ...

  4. mysql阻塞 事务_MySQL Innodb如何找出阻塞事务源头SQL

    在MySQL数据库中出现了阻塞问题,如何快速查找定位问题根源?在实验开始前,咱们先梳理一下有什么工具或命令查看MySQL的阻塞,另外,咱们也要一一对比其优劣,由于有些命令可能在实际环境下可能并不适用. ...

  5. mysql创建用户表的sql语句_Mysql创建、删除用户和表的SQL语句

    Mysql创建.删除用户和表的SQL语句 (2015-01-15 17:08:17) 标签: it 联动北方 数据库 分类: IT MySql中添加用户,新建数据库,用户授权,删除用户,修改密码(注意 ...

  6. mysql删除完全重复数据库_MySQL中删除完全重复数据的准确SQL语句

    案例: id姓名课程名称分数1张三数学692李四数学893张三数学69删除除了自动编号不同,其他都相同的学生冗余信息 ----------------------------------------- ...

  7. mysql查询低效语句_MySQL数据库中查找执行从命慢的SQL语句

    MySQL数据库中查找执行从命慢的SQL语句 (2011-09-15 08:21:35) 标签: 杂谈 去历:赛迪网 做者:Alizze 启动Mysql时减参数--log-slow-queries去挤 ...

  8. JDBC连接mysql、创建表、操作数据、PreparedStatement防注入、sql语句返回值类型知识汇总

    JDBC连接过程: import java.sql.*;/*** Description:* Created by CWG on 2020/10/29 21:05*/ public class Con ...

  9. mysql怎么刷题_面试刷题mysql1:一条sql语句是如何经过mysql的体系结构的?

    {port} -u${user} -p ,输入密码. 使用连接器连接服务端: 连接成功之后,权限修改不会影响当前连接,连接的有效期默认是8个小时: 连接之后,执行过程中使用内存会持续增加,应该定时重置 ...

  10. js语句连接mysql数据库_js中require()的用法----JS如何连接数据库执行sql语句或者建立数据库连接池...

    var vue = require('vue'); 引入vue的意思,commonjs的写法.node都是用require来载入模块的,可以看看webpack+vue. require()可以调用模块 ...

最新文章

  1. android引用的java包_Android开发中jar包的创建及引用
  2. SAP固定资产、管理会计模块习题-针对END-USER
  3. web前端入门学习 css(8)(新增语义化标签、video/audio、新增input类型、新增表单属性、属性选择器、结构伪类选择器、伪元素选择器、css3盒子模型、模糊、calc函数、过渡
  4. 详解如何修改Laravel Auth使用salt和password来认证用户
  5. strcpy完整版 与 strcpy为什么有返回值
  6. ios 控件切圆_iOS中 切圆角,任意几个角(带边框,不带边框)__OC和Swift版本 韩俊强的博客...
  7. 经典OA办公协同管理-原型UI设计-制作
  8. ms Sql server 中的getDate()函数使用方法总结
  9. 软件测试的错误优先级,软件测试典型错误
  10. 101—200之间的素数-Java编写
  11. php网站系统说明,飞飞php影视cms系统v3.0模版最全标签说明
  12. 柯里化 curry
  13. Mac双系统Win10系统安装MySQL的坑
  14. LeetCode知识点总结 - 1413
  15. stata软件不出图_stata 如何导出绘制的图?
  16. 【Ubuntu】Ubuntu更换主题
  17. AUTOCAD——图纸歪了如何对齐
  18. App测试中有哪些常见的性能测试指标?出具App测试报告的软件测试机构推荐
  19. 案例分享-21款奔驰S450L升级原厂夜色饰条套件
  20. 无域控AlwaysOn实战教学 (一)

热门文章

  1. r语言散点图_R语言 | 散点图入门:以声学元音图为例
  2. if 组件是否存在_UE4 UMG简介+Slate组件问题排查
  3. java中输出值保留四位小数_Java工程师(3).变量和数据类型
  4. 不愿意和别人打交道_参加完孩子学校的运动会,宝妈吐槽贫富圈子差距大,不适合打交道...
  5. java java.lang_Java之java.lang.IllegalMonitorStateException
  6. 【转】文本文件和二进制文件区别及java中字节流和字符流归纳
  7. 33种编程语言为您送上祝福,新年快乐!
  8. java实体类属性非空判断工具类
  9. CCNA-第十六篇-综合实验
  10. 【CodeForces - 628C】Bear and String Distance(贪心,构造)