网管联盟 | 网管论坛 | 网管u家 | 网管博客 | 网管软件 | 网管求职 | 小游戏 | 网管搜索 | 网管原创 | 网管聚合 | 网管读摘 | 网管焦点 | 世界素材 | 会员投稿 | 会员中心 
中国网管联盟
Windows Linux Cisco 网络技术 数据库 黑客攻防 DotNet Java PHP 认证 新闻资讯 服务器 存储资讯 网络设备 网管学堂 技术专题 焦点 网吧频道
 当前位置: > bitsCN.com > 数据库技术 > Oracle > 体系架构 > 详解 Oracle 10g中MERGE 功能的增强  

详解 Oracle 10g中MERGE 功能的增强

2006-09-05  作者:网管整理  来源:bitsCN.com  点评 投稿 收藏

Oracle9i引入了MERGE命令,你能够在一个SQL语句中对一个表同时执行inserts和updates操作. MERGE命令从一个或多个数据源中选择行来updating或inserting到一个或多个表.在Oracle 10g中MERGE有如下一些改进:

网管联盟bitsCN@com

 

网管网www_bitscn_com

1、UPDATE或INSERT子句是可选的

网管下载dl.bitscn.com

 

网管u家bitscn.net

2、UPDATE和INSERT子句可以加WHERE子句

网管u家u.bitscn@com

  网管论坛bbs_bitsCN_com

3、在ON条件中使用常量过滤谓词来insert所有的行到目标表中,不需要连接源表和目标表 网管网www_bitscn_com

  网管bitscn_com

4、UPDATE子句后面可以跟DELETE子句来去除一些不需要的行

网管u家bitscn.net

  网管朋友网www_bitscn_net

首先创建示例表: 网管朋友网www_bitscn_net


网管网www_bitscn_com

create table PRODUCTS
    (
    PRODUCT_ID INTEGER,
    PRODUCT_NAME VARCHAR2(60),
    CATEGORY VARCHAR2(60)
    );
    insert into PRODUCTS values (1501, 'VIVITAR 35MM', 'ELECTRNCS');
    insert into PRODUCTS values (1502, 'OLYMPUS IS50', 'ELECTRNCS');
    insert into PRODUCTS values (1600, 'PLAY GYM', 'TOYS');
    insert into PRODUCTS values (1601, 'LAMAZE', 'TOYS');
    insert into PRODUCTS values (1666, 'HARRY POTTER', 'DVD');
    commit;
    create table NEWPRODUCTS
    (
    PRODUCT_ID INTEGER,
    PRODUCT_NAME VARCHAR2(60),
    CATEGORY VARCHAR2(60)
    );
    insert into NEWPRODUCTS values (1502, 'OLYMPUS CAMERA', 'ELECTRNCS');
    insert into NEWPRODUCTS values (1601, 'LAMAZE', 'TOYS');
    insert into NEWPRODUCTS values (1666, 'HARRY POTTER', 'TOYS');
    insert into NEWPRODUCTS values (1700, 'WAIT INTERFACE', 'BOOKS');
          commit; 网管联盟bitsCN@com 

1、可省略的UPDATE或INSERT子句 中国网管论坛bbs.bitsCN.com

 

中国网管论坛bbs.bitsCN.com

在Oracle 9i, MERGE语句要求你必须同时指定INSERT和UPDATE子句.而在Oracle 10g, 你可以省略UPDATE或INSERT子句中的一个. 下面的例子根据表NEWPRODUCTS的PRODUCT_ID字段是否匹配来updates表PRODUCTS的信息:

网管下载dl.bitscn.com

  网管bitscn_com

SQL> MERGE INTO products p
    2 USING newproducts np
    3 ON (p.product_id = np.product_id)
    4 WHEN MATCHED THEN
    5 UPDATE
    6 SET p.product_name = np.product_name,
    7 p.category = np.category;
    3 rows merged.
    SQL> SELECT * FROM products;
    PRODUCT_ID PRODUCT_NAME CATEGORY
    ---------- -------------------- ----------
    1501 VIVITAR 35MM ELECTRNCS
    1502 OLYMPUS CAMERA ELECTRNCS
    1600 PLAY GYM TOYS
    1601 LAMAZE TOYS
    1666 HARRY POTTER TOYS
    SQL>
    SQL> ROLLBACK;
    Rollback complete.
          SQL> 

网管bitscn_com

 

网管联盟bitsCN@com

 

网管u家bitscn.net

  网管u家www.bitscn.net

 

TAGs   功能   增强   详解   SQL   TOYS   条件   ELECTRNCS   ON   匹配   WHERE      
 上一篇:创新性应用 数据建模经验谈   下一篇:Oracle Database缓冲区漏洞
详解 Oracle 10g中MERGE 功能的增强 评论:
loading.. 评论加载中…
评论:请自觉遵守互联网相关政策法规,评论不得超过250字。

验证码: 注册用户
本类热门排行:
最新推荐文章:
网管论坛交流: