INERT REPLACE UPDATE区别

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

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 。
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
C++
delete与delete【】区别
delete与delete【】区别
20 0
|
10月前
|
程序员 C++
C++:new和delete的用法
C++:new和delete的用法
69 0
|
11月前
insert和insertselective的区别
insert和insertselective的区别
138 0
pymongodb 的update_one、replace_one的参数
这样写,会查出如果存在就更新,如果不存在就插入。
80 0
|
关系型数据库 MySQL 索引
mysql:insert ignore、insert和replace区别
mysql:insert ignore、insert和replace区别
156 0
mysql:insert ignore、insert和replace区别
|
SQL
update 的一种用法
declare @aa int set @aa = 1update EWC_HT_Contract set ContractCode = a.ContractCode + cast (@aa as nvarchar(10)),@aa = @aa +1 from  (select ContractCode from  ContractWHERE (MasterID = 1) ) as awhere MasterID = 2   SQL Server 2000 里面的通过记录修改另一条记录地方法,还可以修改序号。
666 0