Oracle 中Merge into 的用法

本文详细介绍了 MERGE INTO 语句的核心用途、用法规则及语法结构,并通过实例展示了如何利用该语句实现数据的高效更新和插入。同时探讨了其在数据仓库应用中的优势及使用时需要注意的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核心用途:

        使用一语句从一个或者多个数据源中完成对表的更新和插入操作。

用法规则:

1、insert 和update是可选的

2、update和insert后面可以跟where子句

3、在on条件中可以使用常量来insert所有的行到目标表中,不需要连接到源表和目标表

4、update子句后面可以跟delete去除一些不需要的行

语法:

MERGE   INTO SCHEMA .TABLE T_ALIAS

USING  SCHEMA . {TABLE | VIEW |SUBQUERY } T_ALIAS

ON (CONDITION)

WHEN  MATCHED  THEN 

MERGE_UPDATE_CLAUSE

WHEN  NOT  MATCHED  THEN 

MERGE_INSERT_CLAUSE / MERGE_DELETE_CLAUSE;

举例说明:


1、匹配更新


2、不匹配插入


3、匹配不带where更新


4、匹配带where更新、插入


5、on常量表达式


6、匹配删除、不匹配插入


7、源表为子查询(自连接)


优点:

 —避免了分开更新

 —提高性能并易于使用

 —在数据仓库应用中十分有用

 —使用merge比传统的先判断再选择插入或更新快很多

需要注意的地方:

1、从语法条件上看(ON (join condition)),merge into也是一个危险的语法。如果不慎重使用,会将源表全部覆盖到目标表,既危险又浪费效率,违背了增量同步的原则。所以在设计表结构时,一般每条记录都有更新时间的字段,用目标表最大更新时间判断源表数据是否有更新和新增的信息。

2、更新的字段,不允许有关联条件的字段(join condition)。比如条件是 A.ID=B.ID,那么使用“SET A.ID=B.ID”将报出一个莫名其妙的提示错误。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值