MERGE的简单用法和稍复杂用法(9i和10g的异同)

来源:互联网 发布:闲鱼在淘宝哪里 编辑:程序博客网 时间:2024/06/14 00:37

按我的理解,MERGE命令是update和insert的结合。看网上的文章,效率要比单独判断来更新和插入要高。

参考:http://www.linuxidc.com/Linux/2014-07/104695.htm

MERGE INTO 是Oracle 9i新增的语法,在10g时得到补充,用来合并UPDATE和INSERT语句,根据一张表或子查询与另一张表进行连接查询,连接条件匹配就进行UPDATE,不匹配就进行INSERT,这个语法仅需要一次全表扫描就可以完成全部工作,执行效率会比单纯的UPDATE+INSERT高,具体应用可用于表之间的同步。

我理解的语法:

            MERGE INTO 目标表

            USING 源表/视图/查询

            ON  连接条件

            --更新可选 WHEN MATCHED THEN 

                              UPDATE SET 目标表.列=源表/视图/查询.列

            --10g功能  WHERE 源表/视图/查询.列=条件

            --10g功能  DELETE WHERE 源表/视图/查询.列=条件  (删除的是目标表的记录)


            --插入可选 WHEN NOT MATCHED THEN 

                              INSERT [列] VALUES(值)

            --10g功能  WHERE 源表/视图/查询.列=条件


10g中增强一:条件操作
10g中增强二:删除操作
An optional DELETE WHERE clause can be used to clean up after a merge operation. Only those rows which match both the ON clause and the DELETE WHERE clause are deleted.

注: 匹配时     更新能否使用目标表条件未知,删除能否使用目标表条件未知

        不匹配时 插入时使用目标表条件无意义,删除能否使用 源表条件删除源表未知

                               

参考 http://tomszrp.itpub.net/post/11835/263865

http://tomszrp.itpub.net/post/11835/263865

0 0