Oracle-merge语句学习
2012-12-24 11:34
465 查看
1.语法格式
MERGE <hint>
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>];
2.测试数据
3.测试merge语句
MERGE <hint>
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>];
2.测试数据
create table dept_bonuses (employee_id number, bonus_amt number); insert into dept_bonuses values(103,0); insert into dept_bonuses values(104,100); insert into dept_bonuses values(105,0); commit; create table employees (employee_id number, department_id number, last_name varchar2(20), salary number); insert into employees values(103,60,'A',9000); insert into employees values(104,60,'B',6000); insert into employees values(105,60,'C',4800); insert into employees values(106,60,'D',9800); insert into employees values(107,60,'E',4200); commit; kin@KIN>select * from dept_bonuses; EMPLOYEE_ID BONUS_AMT ----------- ---------- 103 0 104 100 105 0 kin@KIN>select * from employees; EMPLOYEE_ID DEPARTMENT_ID LAST_NAME SALARY ----------- ------------- -------------------- ---------- 103 60 A 9000 104 60 B 6000 105 60 C 4800 106 60 D 9800
3.测试merge语句
merge into dept_bonuses b using ( select employee_id,salary,department_id from employees where department_id = 60) e on (b.employee_id = e.employee_id) when matched then update set b.bonus_amt = e.salary * 0.2 where b.bonus_amt = 0 delete where (e.salary > 7500) when not matched then insert (b.employee_id,b.bonus_amt) values (e.employee_id,e.salary * 0.1) where (e.salary < 7500); kin@KIN>select * from dept_bonuses; EMPLOYEE_ID BONUS_AMT ----------- ---------- 104 100 105 960 107 420
相关文章推荐
- Oracle里通过merge语句判断重复插入
- Oracle学习(二):编写简单SELECT语句
- [跟着hsp步步学习系统]oracle培训学习集锦全360度扫描(2)一条update语句,与mysql有异
- Oracle 中MERGE语句的用法(转载)
- oracle学习 第一章 简单的查询语句 ——03
- oracle学习--循环语句
- Oracle11g学习笔记_20170508_Oracle命令和语句的执行工具
- Oracle教程之DML语句中MERGE的用法
- oracle学习--循环语句
- 子查询 oracle输入 set语句 MERGE 事务 数据类型 约束 视图 外键
- Oracle学习——循环与控制语句
- Oracle 数据库基础学习 (七) SQL语句综合练习
- [oracle] update和merge语句的几点写法
- Oracle 中MERGE语句的用法
- oracle DML语句的学习(1 )
- Oracle学习查询语句的笔记
- Oracle PL/SQL语句基础学习笔记(上)
- Oracle中SQL语句学习三(union,Intersect,Minus)
- Oracle 学习:PL/SQL循序渐进全面学习教程--课程十二 编写控制结构语句
- Oracle Merge语句少用 容易引起死锁