`

oracle中merge的简单使用

阅读更多

merge在oracle用以从另一张表中取数据插入到一张表中,如果两张表中记录符合某些条件,则替换,如果不符合则插入。下面的例子是把mergetest中记录更新到newmergetest,如果两张表的id相同,则更新newmergetest,否则插入:

首先建两张测试表:

 create table mergetest(id number primary key,name varchar(20));
 create table newmergetest(id number primary key,name varchar(20));

 往两张表中插入数据:

insert into newmergetest values(1,'first');
insert into newmergetest values(2,'second');

insert into mergetest values(1,'one')
insert into mergetest values(2,'two');
insert into mergetest values(3,'three');

 

 

运行更新sql语句:

MERGE INTO newmergetest m 
using (select * from mergetest) t   
ON (m.id = t.id) 
WHEN NOT MATCHED THEN 
INSERT VALUES (t.id,t.name)   
WHEN MATCHED THEN
UPDATE SET m.name = t.name

 执行完后,newmergetest中的记录将和mergetest中的一致。不会因为违反主键约束而更新失败。

分享到:
评论

相关推荐

    oracle Merge 函数.doc

    下面是一个简单的示例,演示如何使用 Merge 函数来更新或插入数据: ```sql CREATE TABLE merge_test1 (a NUMBER, b VARCHAR2(20)); CREATE TABLE merge_test2 (a NUMBER, b VARCHAR2(20)); INSERT INTO merge_test...

    oracle sqlldr;;merge;分组排序;条件赋值;表连接。简单示例

    实用基础SQL语句;oracle sqlldr;SQL基础语句;merge;分组排序;条件赋值;表连接。简单示例,Oracle数据库文档数据导入

    oracle+11g+使用教程

    3. **基本 SQL 查询**:学习如何使用 SELECT 语句来查询表中的数据,包括简单的 SELECT * FROM table_name 语句,以及更为复杂的 JOIN 和子查询等。 #### 四、Oracle 11g 新特性介绍 1. **分区表**:Oracle 11g ...

    merge_row_count:一个简单的实用程序,允许对由 Oracle 中的合并操作插入更新删除的行进行计数

    一个简单的实用程序 PL/SQL 包,允许对 Oracle 中的合并操作插入/更新/删除的行进行计数。 包的需要 Oracle不提供获取行数的功能。 插入 更新 已删除 使用 MERGE 操作完成所有操作时。 这个简单的实用程序是为了...

    update语句的优化-oracle .pdf

    总结来说,针对Oracle数据库的update语句的优化,主要可以从简化SQL语句结构、合理使用子查询和join操作、采用merge语句以及编写PL/SQL游标处理等多方面入手。在实际应用中,根据具体情况选择合适的优化方案,能够...

    oracle errors (oracle 错误)

    解决此类问题的一种方法是使用Oracle的Export/Import工具(expdp/impdp),但需要确保数据文件中的对象和功能在目标数据库版本中可用。 **为什么在尝试更新物化视图的时候出现了ORA-03113错误?** ORA-03113错误...

    MySQL VS ORACLE.pdf

    Oracle的查询缓存能够存储SQL语句的执行结果,而MySQL的查询缓存功能较弱,通常只能在存储过程中使用。 Oracle提供了对物化视图、分区表、全局索引、本地索引的支持,这些特性可以帮助处理大量数据。MySQL虽然支持...

    Oracle MERGE INTO的用法示例介绍

    Oracle的MERGE INTO语句是一种高效且灵活的数据操纵语言(DML)操作,它结合了INSERT和UPDATE的功能,能够在单个SQL语句中处理插入新记录和更新已有记录的情况。这个特性使得数据库交互更为简洁,减少了多次查询...

    Oracle SQL高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码

    有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。  JARED STILL 从1994年就开始使用...

    Oracle中hash join研究.pdf

    哈希连接(Hash Join)是Oracle数据库中的一种高效连接方法,主要针对等值连接操作,其引入旨在解决嵌套循环连接(Nested Loop Join)中的大量随机读取问题以及排序合并连接(Sort-Merge Join)中的排序成本过高问题...

    Oracle的执行计划

    RBO(Rule-Based Optimizer)是Oracle早期版本中使用的优化器,基于一系列预定义的规则来确定执行计划。虽然现在很少使用,但在某些情况下仍然可以手动指定使用RBO。 #### 十二、对于CBO优化器 CBO(Cost-Based ...

    oracle表的连接方式

    尽管在现代数据库系统中,SORT MERGE JOIN由于其高排序成本而较少使用,但在某些特定场景下,如数据已预先排序时,它的性能可能优于其他连接类型。 **使用场合**: - 在没有索引的情况下,特别是在9i版本之后,由于...

    ORACLE_高效SQL分析

    数据字典缓存用于存储Oracle对象的信息,而SQL库缓存则用来缓存已解析的SQL语句,这样当同一SQL再次执行时可以直接使用缓存的版本,从而避免了重复的解析操作。 - **Data Buffer Cache**:用于缓存从磁盘读取的数据...

    Oracle Sql基础 Oracle Sql基础 Oracle Sql基础

    - 可以在SELECT语句中使用算术运算符如+、-、*、/来进行简单的数学运算。 - **1.4.6 定义空值** - 在SQL中,NULL表示未知或缺失的值,可以在查询中使用IS NULL或IS NOT NULL来处理这些值。 - **1.4.7 定义列别名**...

    oracle dba 笔试题

    - **Merge Join**: 这种连接方式适用于两个表中都有排序的情况,Oracle将两个已排序的表进行合并操作,效率较高。 - **Hash Join**: 当两个表中的一个较小,另一个较大的时候,Hash Join非常有效。它首先在内存中...

    Oracle课堂笔记常用命令,简单易懂

    - 在Oracle中,可以使用双竖线 `||` 来进行字符串拼接,例如: ``` SELECT 'Hello' || 'World' AS Result FROM dual; ``` 5. **去除重复值**: - 使用`DISTINCT`关键字来去除查询结果中的重复值,例如: ``` ...

    Oracle数据库性能优化浅析

    #### 三、Oracle数据库处理SQL的简单过程 Oracle数据库处理SQL语句的过程主要包括以下几个步骤: 1. **语法分析**:接收用户的SQL语句后,在共享池中进行语法分析。 2. **执行计划生成**:根据分析结果生成执行...

Global site tag (gtag.js) - Google Analytics