REPLACE INTO 和 INSERT INTO 区别

REPLACE的运行与INSERT很相似。

只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。

注意,除非表有一个PRIMARY
KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义。该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行。

REPLACE语句会返回一个数,来指示受影响的行的数目。该数是被删除和被插入的行数的和。如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除。如果该数大于1,则在新行被插入前,有一个或多个旧行被删除。

如果表包含多个唯一索引,并且新行复制了在不同的唯一索引中的不同旧行的值,则有可能是一个单一行替换了多个旧行。

如:表user 中 字段id 为主键,name 为UNIQUE KEY,有两条记录

1  turtle

2  hai

REPLACE INTO user VALUES(‘4‘,‘hai‘);

则原先的两条记录都会先被删除,然后才插入这条新的记录 4  hai

受影响的行数可以容易地确定是否REPLACE只添加了一行,或者是否REPLACE也替换了其它行:检查该数是否为1(添加)或更大(替换)。

REPLACE INTO 和 INSERT INTO 区别,布布扣,bubuko.com

时间: 2024-12-13 15:03:30

REPLACE INTO 和 INSERT INTO 区别的相关文章

关于thymeleaf th:replace th:include th:insert 的区别

关于thymeleaf th:replace th:include th:insert 的区别    th:insert   :保留自己的主标签,保留th:fragment的主标签.    th:replace :不要自己的主标签,保留th:fragment的主标签.    th:include :保留自己的主标签,不要th:fragment的主标签.(官方3.0后不推荐) 例子 <span style="font-family:SimHei;font-size:18px;"&g

Replace INTO与INSERT INTO的不同之处

Replace INTO和INSERT INTO的区别: REPLACE的运行与INSERT很相似.只有一点例外,假如表中的一个旧记录与一个用于PRIMARY KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除. 注意,除非表有一个PRIMARY KEY或UNIQUE索引,否则,使用一个REPLACE语句没有意义.该语句会与INSERT相同,因为没有索引被用于确定是否新行复制了其它的行. 所有列的值均取自在REPLACE语句中被指定的值.所有缺失的列被设置为各自

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

原文链接:http://www.jb51.net/article/47090.htm 今天听同事介绍oracle到mysql的数据migration,他用了Insert into ..... on duplicate key update ...,我当时就想怎么不用Replace呢,于是回来就仔细查了下,它们果然还是有区别的 看下面的例子吧: 1 Replace into ... 1.1 录入原始数据 mysql> use test; Database changed mysql>  mysq

MySQL replace into (insert into 的增强版)

在使用SQL语句进行数据表插入insert操作时,如果表中定义了主键,插入具有相同主键的记录会报错:  Error Code: 1062. Duplicate entry 'XXXXX' for key 'PRIMARY'(主键冲突) 这样我们只好检查主键是不是存在,若存在则更新,若不存在则插入.或者写SQL流程控制语句(if...else...) Mysql提供了replace into跟insert into的功能一样.不同点在于: 如果发现表中已经有此行数据(根据主键或者唯一索引判断)则先

INERT DELEYED、INSERT IGNORE replace into和insert区别

insert into表示插入数据,数据库会检查主键,如果出现重复会报错:replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样:insert ignore表示,如果表中如果已经存在相同的记录,则忽略当前新数据:测试代码如下: Sql代码   create table testtb( id int not null primary key, name varchar(5

MYSQL中insert into和replace into以及insert ignore的区别

mysql中常用的三种插入数据的语句: insert into表示插入数据,数据库会检查主键(PrimaryKey),如果出现重复会报错: replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引的话,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样: REPLACE语句会返回一个数,来指示受影响的行的数目.该数是被删除和被插入的行数的和.如果对于一个单行REPLACE该数为1,则一行被插入,同时没有行被删除.如果该数大

MYSQL之REPLACE INTO和INSERT … ON DUPLICATE KEY UPDATE用法

REPLACE INTO的用法与INSERT很相似,最终在表中的目的是插入一行新的数据.不同的是,当插入时出现主键或者唯一索引冲突的时候,会删除原有记录,重新插入新的记录.因此,除非表具有主键或者唯一索引,否则使用REPLACE INTO无任何意义. 以下新建了一个表来进行测试,并添加触发检视REPLACE INTO是如何工作的: CREATE TABLE `replace_into` ( `id` int(11) NOT NULL AUTO_INCREMENT, `uid` int(11) N

mongodb - save()和insert()的区别

遇到_id相同的情况下:insert操作会报错:save完成保存操作 > db.person.find() > db.person.insert({"_id":1,age:1,name:"hh"}) WriteResult({ "nInserted" : 1 }) > db.person.find() { "_id" : 1, "age" : 1, "name" : &

js实现页面跳转,location.href和location.replace和location.reload的区别

阅读:2016-03-09 18:47 标签:it reload 方法,该方法强迫浏览器刷新当前页面. 语法: location.reload([bForceGet]) 参数: bForceGet,可选参数,默认为false,从客户端缓存里取当前页.如果设置为true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5('刷新') replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法之后,你不能通过"前进"和&q