[每日一题] OCP1z0-047 :2013-08-16 merge的用法............................................
2013-08-16 20:41
507 查看
转载请注明出处:http://blog.csdn.net/guoyjoe/article/details/10010395
正确答案:A(作为条件判断字段是不能被更新的)B:misplaced(错位),INSERT写法是对的,并没有错位。C:WHERE子句可以放在INSERT后面做为条件。D:视图可以做为数据源(真正的数据来自于视图所对应的表)。 MERGE语句具有按条件获取要更新或插入到表中的数据行,然后从1个或多个源头对表进行更新或者向表中插入行两方面的能力。它最经常被用在数据仓库中来移动大量的数据,但它的应用不仅限于数据仓库环境下。这个语句提供的一个很大的附加值在于你可以很方便地把多个操作结合成一个。这就使你可以避免使用多个INSERT、UPDATE及DELETE语句。MERGE语句的语法是:MERGE <hit>INTO <table_name>USING<table_view_or_query>ON (<condition>)WHEN MATCHED THEN<update_clause>DELETE <where_clause>WHEN NOT MATCHED THEN <insert_clause>[LOG ERRORS <log_errors_clause> reject limit <integer|unlimited>]; 为了说明MERGE语句的用法,我们做个测试:1、创建表
2、插入记录
3、查询60号部门的员工表和奖金表
4.使用MERGE
5、再查奖金表
6、回滚
7、MERGE语句完成了下面的这些事情:(1)插入了两行(员工ID106和107)(2)更新了一行(员工ID105)(3)删除了一行(员工ID103)(4)一行保持不变(员工ID104)如果没有MERGE语句,你必须最少写3条不同的语句来完成同样的事情。 官方文档语法:
QQ:252803295
学习交流QQ群:
DSI&Core Search Ⅰ 群:127149411(技术:已满)
DSI&Core Search Ⅱ 群:177089463(技术:未满)
DSI&Core Search Ⅲ 群:284596437(技术:未满)
DSI&Core Search Ⅳ 群:192136702(技术:未满)
DSI&Core Search Ⅴ 群:285030382(闲聊:未满)
MAIL:oracledba_cn@hotmail.com
BLOG: http://blog.csdn.net/guoyjoe
WEIBO:http://weibo.com/guoyJoe0218
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM: http://education.oracle.com/education/otn/YGuo.HTM
正确答案:A(作为条件判断字段是不能被更新的)B:misplaced(错位),INSERT写法是对的,并没有错位。C:WHERE子句可以放在INSERT后面做为条件。D:视图可以做为数据源(真正的数据来自于视图所对应的表)。 MERGE语句具有按条件获取要更新或插入到表中的数据行,然后从1个或多个源头对表进行更新或者向表中插入行两方面的能力。它最经常被用在数据仓库中来移动大量的数据,但它的应用不仅限于数据仓库环境下。这个语句提供的一个很大的附加值在于你可以很方便地把多个操作结合成一个。这就使你可以避免使用多个INSERT、UPDATE及DELETE语句。MERGE语句的语法是:MERGE <hit>INTO <table_name>USING<table_view_or_query>ON (<condition>)WHEN MATCHED THEN<update_clause>DELETE <where_clause>WHEN NOT MATCHED THEN <insert_clause>[LOG ERRORS <log_errors_clause> reject limit <integer|unlimited>]; 为了说明MERGE语句的用法,我们做个测试:1、创建表
gyj@MYDB> create table dept60_bonuses 2 (employee_id number 3 ,bonus_amt number); Table created.
2、插入记录
gyj@MYDB> insert into dept60_bonuses values (103, 0); 1 row created. gyj@MYDB> insert into dept60_bonuses values (104, 100); 1 row created. gyj@MYDB> insert into dept60_bonuses values (105, 0); 1 row created. gyj@MYDB> commit; Commit complete.
3、查询60号部门的员工表和奖金表
gyj@MYDB> select employee_id, last_name, salary 2 from hr.employees 3 where department_id = 60 ; EMPLOYEE_ID LAST_NAME SALARY ----------- ------------------------- ---------- 103 Hunold 9000 104 Ernst 6000 105 Austin 4800 106 Pataballa 4800 107 Lorentz 4200 gyj@MYDB> select * from dept60_bonuses; EMPLOYEE_ID BONUS_AMT ----------- ---------- 103 0 104 100 105 0
4.使用MERGE
gyj@MYDB> merge into dept60_bonuses b 2 using ( 3 select employee_id, salary, department_id 4 from hr.employees 5 where department_id = 60) e 6 on (b.employee_id = e.employee_id) 7 when matched then 8 update set b.bonus_amt = e.salary * 0.2 9 where b.bonus_amt = 0 10 delete where (e.salary > 7500) 11 when not matched then 12 insert (b.employee_id, b.bonus_amt) 13 values (e.employee_id, e.salary * 0.1) 14 where (e.salary < 7500); 4 rows merged.
5、再查奖金表
gyj@MYDB> select * from dept60_bonuses; EMPLOYEE_ID BONUS_AMT ----------- ---------- 104 100 105 960 106 480 106 420
6、回滚
gyj@MYDB> rollback; Rollback complete.
7、MERGE语句完成了下面的这些事情:(1)插入了两行(员工ID106和107)(2)更新了一行(员工ID105)(3)删除了一行(员工ID103)(4)一行保持不变(员工ID104)如果没有MERGE语句,你必须最少写3条不同的语句来完成同样的事情。 官方文档语法:
QQ:252803295
学习交流QQ群:
DSI&Core Search Ⅰ 群:127149411(技术:已满)
DSI&Core Search Ⅱ 群:177089463(技术:未满)
DSI&Core Search Ⅲ 群:284596437(技术:未满)
DSI&Core Search Ⅳ 群:192136702(技术:未满)
DSI&Core Search Ⅴ 群:285030382(闲聊:未满)
MAIL:oracledba_cn@hotmail.com
BLOG: http://blog.csdn.net/guoyjoe
WEIBO:http://weibo.com/guoyJoe0218
ITPUB: http://www.itpub.net/space-uid-28460966.html
OCM: http://education.oracle.com/education/otn/YGuo.HTM
相关文章推荐
- [每日一题] OCP1z0-047 :2013-08-16 merge的用法....................................................45
- [每日一题] OCP1z0-047 :2013-08-18 禁用启用约束――主键与外键 ..................................61
- [每日一题] OCP1z0-047 :2013-08-17 EXTERNAL TABLE――加载数据 ............................56
- [每日一题] OCP1z0-047 :2013-08-15 描述GROUPING 函数 .....................................
- [每日一题] OCP1z0-047 :2013-08-14 如何理解USING INDEX?...................................4
- [每日一题] OCP1z0-047 :2013-08-19 DATE TYPE............................................
- [每日一题] OCP1z0-047 :2013-08-25 正则表达式REGEXP_LIKE-----‘harddisks’.................108
- [每日一题] OCP1z0-047 :2013-08-10 INTERVAL DAY TO SECOND........................................
- [每日一题] OCP1z0-047 :2013-08-11 描述层次查询(hierarchical query)........................31
- [每日一题] OCP1z0-047 :2013-08-12 view视图的描述哪些是正确的?...............................32
- [每日一题] OCP1z0-047 :2013-08-29 NULL..........................................................
- [每日一题] OCP1z0-047 :2013-08-20 GROUP BY扩展――GROUPING、ROLLUP.....................88
- [每日一题] OCP1z0-047 :2013-08-06 外表部――相关描述.....................................................
- [每日一题] OCP1z0-047 :2013-08-13 Flashback Version Query.....................................3
- [每日一题] OCP1z0-047 :2013-08-08 相关子查询中EXISTS的使用.....................................28
- [每日一题] OCP1z0-047 :2013-07-13 oracle 10g正则表达式 REGEXP_LIKE 用法.....................................2
- [每日一题] OCP1z0-047 :2013-08-07 SELECT---PRODUCT_INFORMATION...................27
- [每日一题] OCP1z0-047 :2013-08-23 SYNONYM(公有和私有同义词)――权限问题...................93
- [每日一题] OCP1z0-047 :2013-08-26 TIMESTAMP WITH LOCAL TIME ZONE....................112
- [每日一题] OCP1z0-047 :2013-08-27 WITH子句........................................................