INERT REPLACE UPDATE区别

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介:

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 。
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7月前
|
关系型数据库 索引
select for update 含义
select for update 含义
|
3月前
|
SQL 关系型数据库 MySQL
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
本文介绍了在ThinkPHP6框架中如何连接和使用数据库进行增删改查操作。内容包括配置数据库连接信息、使用Db类进行原生MySQL查询、find方法查询单个数据、select方法查询数据集、save方法添加数据、insertAll方法批量添加数据、insertGetId方法添加数据并返回自增主键、delete方法删除数据和update方法更新数据。此外,还说明了如何通过数据库配置文件进行数据库连接信息的配置,并强调了在使用Db类时需要先将其引入。
ThinkPHP6 连接使用数据库,增删改查,find,select,save,insert,insertAll,insertGetId,delete,update方法的用法
|
7月前
|
关系型数据库 MySQL 数据库
INSERT IGNORE与INSERT INTO的区别
INSERT IGNORE与INSERT INTO的区别
164 0
|
7月前
|
前端开发
在history模式中push和replace有什么区别
在history模式中push和replace有什么区别
pymongodb 的update_one、replace_one的参数
这样写,会查出如果存在就更新,如果不存在就插入。
128 0
|
关系型数据库 MySQL 索引
mysql:insert ignore、insert和replace区别
mysql:insert ignore、insert和replace区别
204 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 里面的通过记录修改另一条记录地方法,还可以修改序号。
685 0