`

replace into

 
阅读更多

MySQL replace into 用法

在向表中插入数据的时候,

经常遇到这样的情况:

 首先判断数据是否存在;

1. 如果不存在,则插入;

2.如果存在,则更新。

<1>在 SQL Server 中可以这样处理:

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

 

<2>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 将自动为这些列赋上默认值。

分享到:
评论

相关推荐

    解析SQL语句中Replace INTO与INSERT INTO的不同之处

    本篇文章是对SQL语句中Replace INTO与INSERT INTO的不同之处进行了详细的分析介绍,需要的朋友参考下

    Mysql中replace与replace into的用法讲解

    Mysql replace与replace into都是经常会用到的功能;replace其实是做了一次update操作,而不是先delete再insert;而replace into其实与insert into很相像,但对于replace into,假如表中的一个旧记录与一个用于...

    MySQL replace into 用法.txt

    MySQL replace into 用法.txt

    mysql 的replace into实例详解

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

    MySQL replace into 语句浅析(一)

    主要介绍了MySQL replace into 语句浅析(一),本文讲解了replace into的原理、使用方法及使用的场景和使用示例,需要的朋友可以参考下

    mysql中replace into的用法详解

    replace into语句会根据唯一键/主键删除原有的一条记录, 并且插入一条新的记录来替换原记录。如果没有表不存在唯一键/主键 或者 插入的数据唯一键/主键没有重复的,那么会新增一条记录。 新建一个test表,三个字段...

    浅析MySQL replace into 的用法

    在 SQL Server 中可以这样处理: 代码如下: if not exists (select 1 from t where id = 1) ...MySQL 中有更简单的方法: replace into 代码如下: replace into t(id, update_time) values(1, now());或 repl

    MySQL replace into 语句浅析(二)

    本章内容通过一个例子说明 replace into 带来的潜在的数据质量风险,当涉及replace into操作的表含有自增主键时,主备切换后会造成数据覆盖等不一致的情况发生。 二 案例分析 在主库上操作 代码如下: root@test 12:36...

    MySQL的Replace into 与Insert into on duplicate key update真正的不同之处

    今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on duplicate key update ...,我当时就想怎么不用Replace呢,于是回来就仔细查了下,它们果然还是有区别的

    MySQL使用Replace操作时造成数据丢失的问题解决

    公司开发人员在更新数据时使用了 replace into 语句,由于使用不当导致了数据的大量丢失,到底是如何导致的数据丢失本文对此进行分析。 一、问题说明 公司开发人员在更新数据时使用了 replace into 语句,由于使用...

    Spring Boot数据库批量更新:六种方案,一场效率之战.zip

    包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...

    MySQL中REPLACE INTO和INSERT INTO的区别分析

    注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。[separator] 所有列的值均取自在REPLACE语句中被指定的值...

    mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点实例分析

    本文实例讲述了mysql 中 replace into 与 insert into on duplicate key update 的用法和不同点。分享给大家供大家参考,具体如下: replace into和insert into on duplicate key update都是为了解决我们平时的一个...

    MySQL Replace INTO的使用

    REPLACE的运行与INSERT很相像。只有一点除外,如果表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。请参见13.2.4节,“INSERT语法”。 注意,...

    MySQL中replace into语句的用法详解

    if not exists (select 1 from table where id = 1) insert into table(id, update_time) values(1, getdate()) else update table set update_time = getdate() where id = 1 在MySQL 中也可以先select,判断是否...

Global site tag (gtag.js) - Google Analytics