INSERT INTO vs REPLACE INTO vs INSERT IGNORE INTO

MySQL开发者必看:金仓数据库V009R003C011迁移实战中的5个关键差异点 本文针对MySQL开发者迁移至金仓数据库V009R003C011版本的实际需求,深入剖析了实战中五个关键差异点。重点分析了DML语句反馈机制、UPDATE/DELETE与LIMIT语法、数据加载、外键约束处理以及系统函数与事务锁机制等方面的核心区别,并提供了具体的解决方案和代码示例,旨在帮助开发者规避迁移陷阱,实现平滑过渡。 阅读详情

前言

在看某块功能的代码的时候,看到了比较有意思的 SQL 语句,如下:

INSERT IGNORE INTO ...

INSERT INTO

用的最多的插入语句了,直接插入一条数据,如果主键冲突,会报错。

REPLACE INTO

替换数据,SQL 语句中必须存在主键或者唯一键,如果存在,则更新,否则插入。

单个 INSERT INTO 语句插入多个值时,InnoDB 表中,会认为这是单个事务,要么都成功,要么都失败。

如果用了 INSERT IGNORE INTO 语句插入多个值时,InnoDB 表中,会按先后顺序插入,冲突的更新。

mysql> DROP TABLE IF EXISTS tb;

mysql> CREATE TABLE `tb` (
    ->   `v1` int(11),
    ->   `v2` int(11),
    ->   UNIQUE KEY `u_v2` (`v2`)
    -> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.03 sec)

mysql> -- 下面一条语句会整体失败
mysql> INSERT INTO tb VALUES (2, 5), (6, 10), (7, 5), (3, 1), (1, 9);
ERROR 1062 (23000): Duplicate entry '5' for key 'u_v2'

mysql> SELECT * FROM tb;
Empty set (0.00 sec)

mysql> -- 下面一条语句会成功4个
mysql> REPLACE INTO tb VALUES (2, 5), (6, 10), (7, 5), (3, 1), (1, 9);
Query OK, 6 rows affected (0.01 sec)
Records: 5  Duplicates: 1  Warnings: 0

mysql> -- 可以看到 (7, 5) 替换了 (2, 5)
mysql> SELECT * FROM tb;
+------+------+
| v1   | v2   |
+------+------+
|    7 |    5 |
|    6 |   10 |
|    3 |    1 |
|    1 |    9 |
+------+------+
4 rows in set (0.00 sec)

INSERT IGNORE INTO

插入数据,SQL 语句中必须存在主键或者唯一键,如果存在,则忽略,否则插入。

单个 INSERT INTO 语句插入多个值时,InnoDB 表中,会认为这是单个事务,要么都成功,要么都失败。

如果用了 INSERT IGNORE INTO 语句插入多个值时,InnoDB 表中,会按先后顺序插入,冲突的失败。

mysql> DROP TABLE IF EXISTS tb;

mysql> CREATE TABLE `tb` (
    ->   `v1` int(11),
    ->   `v2` int(11),
    ->   UNIQUE KEY `u_v2` (`v2`)
    -> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.03 sec)

mysql> -- 下面一条语句会整体失败
mysql> INSERT INTO tb VALUES (2, 5), (6, 10), (7, 5), (3, 1), (1, 9);
ERROR 1062 (23000): Duplicate entry '5' for key 'u_v2'

mysql> SELECT * FROM tb;
Empty set (0.00 sec)

mysql> -- 下面一条语句会成功4个
mysql> INSERT IGNORE INTO tb VALUES (2, 5), (6, 10), (7, 5), (3, 1), (1, 9);
Query OK, 4 rows affected, 1 warning (0.00 sec)
Records: 5  Duplicates: 1  Warnings: 1

mysql> -- 可以看到 
mysql> SELECT * FROM tb;
+------+------+
| v1   | v2   |
+------+------+
|    2 |    5 |
|    6 |   10 |
|    3 |    1 |
|    1 |    9 |
+------+------+
4 rows in set (0.00 sec)

最后

有些场景可以直接用 SQL 来处理了,减少一些代码。

MySQL中replace into语句的深度解析与应用实践 在数据库操作中,处理重复数据是常见需求。MySQL提供了多种解决方案,其中replace into语句通过先删除后插入的机制实现数据替换。从技术原理看,它首先检查主键或唯一索引冲突,存在则删除旧记录再插入新数据,不存在则直接插入。这种DML操作会触发delete和insert触发器,且自增ID会变化,与insert on duplicate key update有本质区别。在数据同步、配置表更新等需要完全替换记录的场景中,replace into展现出独特价值。特别在用户信息同步系统案例中,配合唯一索引能有 阅读详情

相关推荐

INSERT INTO实战指南:从原理、避坑到金融级数据迁移

INSERT INTO是SQL中最基础却最易引发生产事故的数据写入操作,其本质是事务性数据投递,涉及WAL日志、共享缓冲区、锁机制与执行计划优化。理解单行插入与批量插入的I/O路径差异,能避免90%的性能瓶颈;掌握ON CONFLICT、CTAS、INSERT...SELECT DISTINCT等模式的适用边界,可显著提升去重、迁移与初始化效率。在金融、电商等高一致性场景中,INSERT常因隐式锁升级、编码错乱、内存溢出或连接泄漏导致服务中断。本文聚焦真实生产环境下的INSERT调优策略、分批控制、错误收敛

weixin_30888413的博客 381

INSERT INTO 和 INSERT IGNORE INTO

INSERT INTO 和 INSERT IGNORE INTO 都是插入操作。 INSERT INTO向数据库中插入一条新的数据,会检测主键,如果有已经存在的主键,则会报错。 INSERT IGNORE INTO 会忽略数据库中已存在的记录,如果数据库没有重复的主键,则直接新增一条数据,如果已有同样主键的数据,会保留已有数据,新增一条新的数据? SQL语句: INSERT IGNORE INTO table_name (field1,field2) values (value1,value2); ..

竹毛言己 1587

MySQL数据操作实战:从增删改查基础到事务锁机制与性能优化

在实际企业级应用开发中,数据库的“增删改查”是每位开发者必须熟练掌握的核心技能。其中,数据的插入、修改和删除操作,直接关系到业务数据的准确性和完整性,看似基础,却隐藏着许多影响性能、数据一致性和安全性的细节。很多开发者在学习初期,往往只记住了 INSERT 、 UPDATE 、 DELETE 这几个命令的简单语法,但在面对并发写入、批量操作、数据恢复或复杂约束时,却容易束手无策。 本文将以 MySQL 数据库为例,系统性地讲解数据插入、修改和删除操作。我们将从最基础的语法开始,逐步深入到事务控制、性能优化、

weixin_30443747的博客 320

Sqlite 防止插入重复数据

在SQLITE中,可以用以下方法防止插入重复数据, 1.设置表的联合主键 2.在INSERT语句中添加OR IGNORE,即可(重复数据会跳过,且不影响后续数据插入) 示例如下: insert OR IGNORE into PDA_Test (DeviceID,MethodName) values('1112','测试原有');

wlphlj的专栏 2万+

MySQL CRUD实战避坑指南:安全高效写SQL的硬核清单

CRUD是数据库操作的基础范式,涵盖数据查询(SELECT)、插入(INSERT)、更新(UPDATE)和删除(DELETE)四大核心动作。其底层依赖索引机制、事务隔离、锁粒度与执行计划优化等关键原理,技术价值在于保障数据一致性、系统稳定性与业务可追溯性。典型应用场景包括电商订单状态变更、IoT设备批量写入、金融风控规则生效及SaaS多租户数据隔离。实践中,INSERT忽略重复与UPDATE条件遗漏是高频事故源头,而SELECT边界界定不当更会引发连锁误操作。本文聚焦真实生产环境下的SQL安全编写、验证与防

weixin_34023982的博客 379

Sqlite “insert or replace“ 和 “insert or ignore“ 用法

insert or replace:如果不存在就插入,存在就更新。

qq_30725967的博客 3840

MySQL 必现之死锁

MySQL 必现之死锁

wzy0623的专栏 4183

xenomai内核解析--嵌入式实时linux概述

Linux系统作为一个GPOS(通用操作系统)发展至今已经非常成熟可靠了,并且由于遵循GPL协议,开放所有系统源代码,非常易于裁剪。更重要的是,与其他开源的GPOS或RTOS相比,Linux系统支持多种处理器、开发板,提供多种软件开发工具,同时Linux系统对网络和图形界面的支持非常出色。显然,选择Linux操作系统在产品的开发周期和成本控制方面都有巨大优势。 虽然Linux系统功能强大、实用性强...

wsg1100 3700

SQL INSERT 的两种方法

如果不存在则插入,如果存在则忽略 INSERT OR IGNORE INTO tablename VALUES(...); 如果不存在则插入,如果存在则替换 INSERT OR REPLACE INTO tablename VALUES(...);

LanLanLanDiao的博客 447

SAP FICO实操:如何修改已发生业务数据的成本中心公司代码(附RKACOR06程序运行指南)

本文详细解析了SAP FICO系统中使用RKACOR06程序修改已发生业务数据的成本中心和公司代码的实操方法。通过实战案例分享,提供从前期准备到后期验证的全流程指南,帮助企业应对组织架构重组或财务核算体系调整时的数据迁移挑战,特别适用于跨公司代码的成本中心划转场景。

weixin_27303545的博客 189

【技术分享】ArcGIS Pro底图色彩优化实战:从DEM到山体阴影的进阶调色技巧

本文深入探讨了在ArcGIS Pro中优化地形底图色彩的进阶技巧。通过分析DEM与山体阴影的直方图,详细讲解了如何运用图层混合、亮度、对比度及伽马值等核心参数进行精细化调色,从而将灰暗平淡的地图转化为层次分明、视觉美观的专业成果。

5b6n7m8的博客 759

sql 相关问题记录

本篇博客主要记录平时写代码过程中的sql语句或者碰到的问题 insert重复键问题 有三种方法: INSERT IGNORE INTO: 如果有条目匹配unique key或primary key,忽略不插入 注意点:如果出现问题,MySQL将不会显示任何错误,因此无法处理错误,自动增量键仍会增加。 INSERT REPLACE INTO:替换条目,如果有条目匹配unique key或prima...

weixin_40364421的博客 259

CANoe: Panel的上位机控制方法

本文介绍了不同于IG的报文控制方法,实现了Panel面板的控制模式。

Jonsnow3zz的博客 1407

mysql update 加if_MYSQL INSERT或UPDATE IF

首先,在名称,条形码,项目,位置和价格上添加UNIQUE约束.ALTER TABLE tableXADD CONSTRAINT tableX_UQUNIQUE (name, barcode, item, location, price) ;然后你可以使用INSERT INTO … ON DUPLICATE KEY UPDATE:INSERT INTO tableX(name, barcode, ...

weixin_36473057的博客 724

本地AI助手部署指南:DeepSeek Harness与Ollama集成实践

AI Agent作为当前人工智能领域的热门技术,通过模拟人类决策过程,能够自主规划、调用工具并执行复杂任务。其核心原理在于将大语言模型的推理能力与外部工具API相结合,形成可闭环的工作流。这种技术架构的价值在于显著提升了AI系统的实用性和自动化水平,使其从单纯的对话工具转变为能够解决实际问题的智能助手。在应用场景上,AI Agent广泛应用于代码生成、数据分析、自动化办公等领域。本文聚焦于如何通过DeepSeek Harness平台与Ollama本地模型的集成,实现隐私安全、离线可用的AI助手部署方案,特别

dengjuanshou7445的博客 474

手把手教你学Simulink--基于Simulink的风力发电系统用双馈电机控制仿真建模

特点高效节能:在广泛的风速范围内保持高效的能量转换。独立控制有功和无功功率:通过控制转子电流实现对有功和无功功率的独立调节。较低的成本:相比直接驱动或全功率变流器方案,成本较低。挑战控制复杂度较高:需要复杂的控制算法来实现有功和无功功率的解耦控制。对电网波动敏感:需要良好的稳定性控制策略以应对电网电压波动。利用Simscape Electrical中的模块构建DFIG的物理模型,配置参数如电阻、电感、极对数等。matlab深色版本% 添加DFIG电机模块。

MHD0815的博客 347

MySQL新手第一张表:从CREATE TABLE到INSERT实战指南

在关系型数据库中,数据表是结构化存储的核心载体,其设计直接决定查询效率、数据一致性和系统可维护性。CREATE TABLE语句定义了字段类型、约束规则与物理存储特性,而INSERT INTO则实现数据写入,二者构成数据库操作的最小闭环。掌握主键(primary key)的唯一性与索引价值、utf8mb4字符集对中文及emoji的完整支持、NOT NULL与DEFAULT的空值治理策略,是避免乱码、截断、报错的关键技术基础。这些能力广泛应用于学生课程成绩信息实体表设计、电商订单建模、用户行为日志归档等典型场景

weixin_33951761的博客 331

第 13 章:Spring AI Alibaba MCP 与 Nacos3 — 企业级MCP服务

理解Spring AI Alibaba 框架下的MCP服务与Nacos注册中心整合的必要性,学会Spring AI Alibaba-基于Nacos的MCP实现方法

paopao_wu的专栏 788

mysql exsists_MySQL If exsists insert into or else do something else

可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):问题:I'm having some difficulty putting a conditional into MySQL. I've been trying to create a query that will go through all of the column titled email a...

weixin_32490593的博客 237

PCL Alpha Shapes平面点云边界特征提取【2026最新版】

alpha shapes算法用于平面点云的边界特征提取。博客长期更新,本文最近一次更新时间为:2026年4月20日。

点云侠的博客 27万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

SQL核心语法总结:从基础操作到高级窗口函数

SQL作为数据处理的核心语言,掌握其常用语法和高级特性是数据分析、开发的必备技能。本文将系统梳理SQL高频语法,涵盖数据插入、字符串处理、条件判断、存在性查询、窗口函数等核心知识点,结合示例帮你快速理解和应用。数据插入优先根据“重复数据处理逻辑”选择或;字符串处理掌握LENGTHREPLACESUBSTRINGLEFTRIGHT即可覆盖大部分场景;条件判断用CASE表达式,灵活处理多分支逻辑;存在性查询优先用EXISTS替代IN,提升大数据量查询效率;窗口函数OVER()

2301_78125917的博客 926

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

mysql update 加if,MYSQL INSERT或UPDATE IF

Been looking around the web for a while now and don't seem to be able to come across anything similar to what I want. I know it's something to do with the way I'm writing my query but any help would b...

weixin_34696080的博客 569

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

SQL REPLACE()函数实战指南:数据清洗与字符串替换核心技术

REPLACE()是SQL中最基础且高频的字符串操作函数,属于数据库文本替换与数据清洗的核心能力。其原理是逐字符精确匹配并全局替换,不依赖正则、无需额外扩展,具备跨数据库兼容性(MySQL/PostgreSQL/SQL Server/Oracle均原生支持)。技术价值在于低门槛、高确定性、强可审计性——相比Python脚本或ETL工具,它能用一行SQL完成实时预览与批量修正,显著降低调试成本、沟通歧义和长期维护风险。典型应用场景包括HTML实体转义清理、字段格式标准化(如电话号去符号)、业务状态统一(如OB

436

【MyBatis批量插入优化秘籍】:彻底掌握ON DUPLICATE KEY UPDATE高效写法

掌握MyBatis批量插入性能瓶颈的破解之道,深入解析MyBatis的批量插入ON DUPLICATE实现方案,适用于高并发数据写入场景。通过ON DUPLICATE KEY UPDATE避免重复插入,提升数据库操作效率,结合Executor与SQL优化技巧,显著减少IO开销,值得收藏。

ProceShoal的博客 937

MongoDB 非关系型数据库 -文档数据库(二)语法太多记不住?关系型语句 vs Mongo语句

db.users.find({$or: [{$and: [{age: {$gt: 25}}, {city: "北京"}]}, {name: /^张/}]})db.users.count({age: {$gt: 25}}) 或 db.users.find({age: {$gt: 25}}).count()db.users.updateOne({_id: id}, {$set: {name: "张三"}}, {upsert: true})或 SHOW COLUMNS FROM users;

wangjingbin的专栏 364

Snowflake数据入湖实战:从S3批量加载到生产级治理

Snowflake数据入湖不是简单的文件导入,而是涉及数据源适配、传输通道选型、目标建模、质量保障与成本管控的系统工程。其核心原理在于平衡计算资源(虚拟仓库)与云存储(S3/Azure/GCS)的协同效率,技术价值体现在高并发加载能力、细粒度权限控制和按需计费模型。典型应用场景包括多源BI报表构建、电商订单实时同步、金融合规数据归集等。本文聚焦COPY INTO批量加载与Snowpipe流式处理的真实对比,深入解析External Stage配置陷阱、UTF-8编码兼容性、Parquet二进制字段处理等高频

long_yu2的专栏 417
上一篇: Element-ui获取上传的Excel并预览
下一篇: Github镜像站
IMJCW
博客等级 码龄10年 13粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值