由于项目中需要用到批量插入,为了防止用户插入重复的数据,需要先判断插入的数据是不是已经存在,如果存在则忽略这次插入,否则插入这条数据,刚开始的时候是先用一条SQL语句判断,如果返回结果是真(记录已经存在),则忽略,否则插入这条数据,这样的话插入一条数据就要发起两个到数据库的连接,后来发现这样做效率实在太低了,Google了一下,发现oracle数据库支持merge语句,做了个测试,成功了,记录下来供本人及同行以后查阅之用。
数据库:TEST
CREATE TABLE TEST(
ID NUMBER NOT NULL,
NAME VARCHAR2(30) NOT NULL,
SEX VARCHAR2(2) DEFAULT '男'
)
插入两条数据:
INSERT INTO TEST VALUES(1,'SUNZHENXING','男')
INSERT INTO TEST VALUES(2,'SUNHAILONG','女')
MERGE语句:
MERGE INTO TEST A USING TEST B
ON (A.NAME=B.NAME)
WHEN MATCHED THEN
UPDATE SET A.SEX='女'WHERE A.NAME='SUNZHENXING'
WHEN NOT MATCHED THEN
INSERT VALUES (3,'SUNZHENXING','女')
需要注意的是:MERGE语句中的UPDATE语句和INSERT语句和一般的SQL语句格式有点不同
分享到:
相关推荐
MERGE语句在SQL中扮演着关键角色,它提供了一种高效且灵活的方式来合并两个数据集,无论是更新、插入还是删除,都能一气呵成。本文将深入探讨MERGE语句的使用,以及在不支持MERGE的数据库环境中可能采取的替代策略。...
`MERGE`语句在Oracle数据库中是一种非常实用的DML操作,它结合了`INSERT`、`UPDATE`和`DELETE`的功能,使得在处理数据时更加高效且简洁。这个语句自Oracle 9i版本开始引入,主要用于解决在两个数据源之间进行有条件...
4. MERGE语句用于将一个查询结果集与另一个表或查询结果集合并。它是一种高效的数据操作方法,特别适用于数据同步、更新或插入操作。 5. 层次查询(HIERARICAL RETRIVEL)通常指在Oracle中通过CONNECT BY语句实现的...
Oracle的MERGE INTO语句是一种高效且灵活的数据操纵语言(DML)操作,它结合了INSERT和UPDATE的功能,能够在单个SQL语句中处理插入新记录和更新已有记录的情况。这个特性使得数据库交互更为简洁,减少了多次查询...
2. **使用MERGE语句**:利用MERGE语句来避免插入重复记录。 #### ZERO_DIVIDE (ORA-01476) **异常描述:** 在执行除法运算时,如果分母为零,则会触发`ZERO_DIVIDE`(ORA-01476)异常。 **解决方法:** 1. **添加...
- CASE表达式用于实现多分支条件判断,而DECODE函数则类似于IF-THEN语句。 #### 四、从多表中查询数据 **4.1 从多表中查询数据** - 本章主要讲解如何通过连接操作从多个表中获取数据。 **4.2 有效连接条件与...
在性能方面,UPDATE语句可能更适合简单的更新操作,而MERGE语句在处理复杂的条件判断和多表操作时可能更为高效。因此,应根据具体业务逻辑和数据量来选择合适的更新方法。通过对比UPDATE和MERGE的执行成本,可以优化...
- **Mergeinto应用**:这是一种高效的数据合并方式,可以用于更新或插入数据。 - **Truncatetable**:快速清空表中的所有数据而不保留任何索引和约束,适用于测试环境中的数据清理。 - **绑定变量与非绑定变量之比较...
本章节讲解了如何向表中插入数据,从另一个表复制数据,更新表中数据,使用子查询更新多列,删除表中数据,执行基于另一个表的删除操作,以及使用INSERT ALL、MERGE等语句进行复杂的插入操作。还提到了使用DEFAULT值...
本专题将深入探讨几个在Oracle中常用的SQL特性,包括行列转化、MERGE INTO语句、CASE表达式、ROWNUM伪列以及分析函数。这些知识点不仅在日常开发中频繁使用,也是面试中常被问及的技能点。 首先,我们来看行列转化...
在Oracle中,SQL不仅可以用于基本的数据操作,如查询、插入、更新和删除,还可以通过PL/SQL扩展实现更复杂的业务逻辑,比如条件判断、循环结构以及创建存储过程和触发器。 Oracle的数据类型涵盖了多种常见的数据...
SQL*Plus是一个基础的命令行工具,用于执行SQL和PL/SQL语句,其中SQL是用于查询和管理数据的语言,而PL/SQL是Oracle特有的过程化SQL,增加了如循环、条件判断等编程元素,使得数据库操作更为灵活。 在SQL操作中,...
### Oracle高级语句详解 #### 一、With临时表 **功能概述:** `WITH` 子句在SQL中提供了一种定义临时结果集的方法,这些结果集可以在后续的查询中重复使用,从而提高查询效率。`WITH` 临时表在复杂的查询中尤其...
`MERGE`语句可以高效地更新或插入数据,特别适用于需要根据条件更新或插入的场景。 **3-12、多表插入的使用** 使用`INSERT INTO ... SELECT`语句可以从一个或多个表中插入数据到另一个表中,提高数据加载效率。 *...
- **Mergeinto应用**:执行插入或更新操作。 - **Truncate table**:清空表中的所有数据。 - **绑定变量与非绑定变量之比较**:探讨这两种变量类型的不同之处。 - **取不重复的记录行**:筛选出唯一的记录。 - ...
- Mergeinto是一个强大的DML语句,用于插入或更新数据。 **8. Truncatetable** - TRUNCATE TABLE命令用于清空表中的所有数据,但保留表结构不变。 **9. 绑定变量与非绑定变量之比较** - 绑定变量在SQL性能优化中...