INERT REPLACE UPDATE区别

insert into表示插入数据,数据库会检查主键,如果出现重复会报错;
replace into表示插入替换数据,需求表中有PrimaryKey,或者unique索引,如果数据库已经存在数据,则用新数据替换,如果没有数据效果则和insert into一样;

REPLACE也可以使用SET语句,替换update,UPDATE在没有匹配记录时什么都不做,而REPLACE在有重复记录时更新,在没有重复记录时插入

Java代码  

  1. REPLACE INTO users SET id = 123, name = ‘赵本山’, age = 50;  

insert ignore表示,如果表中如果已经存在相同的记录,则忽略当前新数据;
测试代码如下:

Sql代码  

  1. create table testtb(  
  2. id int not null primary key,  
  3. name varchar(50),  
  4. age int  
  5. );  
  6. insert into testtb(id,name,age)values(1,'bb',13);  
  7. select * from testtb;  
  8. insert ignore into testtb(id,name,age)values(1,'aa',13);  
  9. select * from testtb;  
  10. replace into testtb(id,name,age)values(1,"aa",12);  
  11. select * from testtb;  

INSERT IGNORE 与INSERT INTO的区别就是INSERT IGNORE会忽略数据库中已经存在 的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

 

用于INSERT 语句的DELAYED 选项是MySQL 相对于标准SQL 的扩展。如果您的客户端不能等待INSERT 完成,则这个选项是非常有用的。当您使用MySQL 进行日志编写时,这是非常常见的问题。您也可以定期运行SELECT和UPDATE 语句,这些语句花费的时间较长。

当一个客户端使用INSERT DELAYED 时,会立刻从服务器处得到一个确定。并且行被排入队列,当表没有被其它线程使用时,此行被插入。

使用INSERT DELAYED 的另一个重要的好处是,来自许多客户端的插入被集中在一起,并被编写入一个块。这比执行许多独立的插入要快很多。

说明: INSERT DELAYED INTO,是客户端提交数据给MySQL,MySQL返回OK状态给客户端。而这是并不是已经将数据插入表,而是存储在内存里面等待排队。当mysql有空余时,再插入。

  这样的好处是,提高插入的速度,客户端不需要等待太长时间。坏处是,不能返回自动递增的ID,以及系统崩溃时,MySQL还没有来得及插入数据的话,这些数据将会丢失。

注意,当没有使用表时,INSERT DELAYED 比常规的INSERT 要慢。对于服务器来说,为每个含有延迟行的表操纵一个独立的线程,也是一个额外的系统开销。这意味着只有当您确认您需要时,才应使用INSERT DELAYED 。

时间: 2024-12-25 02:21:44

INERT REPLACE UPDATE区别的相关文章

Document.location.href和.replace的区别示例介绍

document.location.href和document.location.replace都可以实现从A页面切换到B页面,下面为大家介绍下它们的区别 document.location.href和document.location.replace都可以实现从A页面切换到B页面,但他们的区别是: 用document.location.href切换后,可以退回到原页面. 而用document.location.replace切换后,不可以通过"后退"退回到原页面. 关于documen

【js 方法】js 页面刷新location.reload和location.replace的区别 【转】

[转]:http://zccst.iteye.com/blog/2162658   reload 方法,该方法强迫浏览器刷新当前页面. 语法: location.reload([bForceGet]) 参数: bForceGet, 可选参数, 默认为 false,从客户端缓存里取当前页.true, 则以 GET 方式,从服务端取最新的页面, 相当于客户端点击 F5("刷新")  replace 方法,该方法通过指定URL替换当前缓存在历史里(客户端)的项目,因此当使用replace方法

sql中translate与replace的区别

  1.translate 语法:TRANSLATE(char, from, to) 用法:返回将出现在from中的每个字符替换为to中的相应字符以后的字符串. 若from比to字符串长,那么在from中比to中多出的字符将会被删除. 三个参数中有一个是空,返回值也将是空值. 举例:SQL> select translate('abcdefga','abc','wo') 返回值 from dual; 返回值 ------- wodefgw 分析:该语句要将'abcdefga'中的'abc'转换为

Document.location.href和.replace的区别示例介绍_基础知识

document.location.href和document.location.replace都可以实现从A页面切换到B页面,但他们的区别是: 用document.location.href切换后,可以退回到原页面. 而用document.location.replace切换后,不可以通过"后退"退回到原页面. 关于document.location.href或其他可回退的切换方式,我还发现一个细节, 用个例子来说明: 假设有A.htm B.htm C.htm三个页面 A.htm里有

Hibernate构架应用中常用保存方式区别

hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一.预备知识: 在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient.persistent.detached 下边是常见的翻译办法: transient:瞬态或者自由态 persistent:持久化状态 detached:脱管状态或者游离态 脱管状态的实例可以通过调用save().persist()或者saveOrUpdate()方法进行持久化. 持久化实例可以通过调用

Hibernate学习之------>Hibernate的保存的区别

hibernate的保存 hibernate对于对象的保存提供了太多的方法,他们之间有很多不同,这里细说一下,以便区别: 一.预备知识: 在所有之前,说明一下,对于hibernate,它的对象有三种状态,transient.persistent.detached 下边是常见的翻译办法: transient:瞬态或者自由态 persistent:持久化状态 detached:脱管状态或者游离态 脱管状态的实例可以通过调用save().persist()或者saveOrUpdate()方法进行持久化

phpmyadmin导入导出数据库备份教程

在PHP网站建设中,针对Mysql数据库的维护是日常工作,Mysql数据库的导入和导出实现备份功能就是其中之一,在之前的PHP教程中我介绍了不少以Mysql命令方式维护Mysql数据库的文章,今天来说说如何使用phpmyadmin对Mysql数据库进行导入和导出操作以实现数据库备份,phpmyadmin作为维护Mysql数据库的第三方可视化工具,操作非常方便. 在使用phpmyadmin进行导入和导出操作之前,首先需要登录phpmyadmin管理界面,这里注意务必检查你的Mysql服务是否开启,

数据集成通过JDBC将数据导入MySQL的几种模式

目前MySQL JDBC提供了多种将数据写入MySQL的方式,本文将介绍数据集成(DataX.同步中心.原CDP)支持的几种模式: insert into xxx values (..), (..), (..) replace into xxx values (..), (..), (..) insert into xxx values (..), (..), (..), - on duplicate key update - 1.功能区别 1.1 insert into 方式 常规的SQL插入

MySQL的语法及其使用指南_Mysql

先看看MySQL支持的SQL语句的分类 1,        数据库的选取,创建,丢弃和变更 use create database drap database alter database 2,        数据表和索引的创建,变更和丢弃 create table drop table create index drop index alter index 3,        从数据表检索信息 select union 4,        事务处理 begin commit rollback