create table small_customers
(customer_id number,
sum_orders number)
;
create table medium_customers
(customer_id number,
sum_orders number)
;
create table large_customers
(customer_id number,
sum_orders number)
;
select * from small_customers ;
select * from medium_customers ;
select * from large_customers ;
insert all
when sum_orders < 10000 then
into small_customers
when sum_orders >= 10000 and sum_orders < 100000 then
into medium_customers
else
into large_customers
select customer_id, sum(order_total) sum_orders
from oe.orders
group by customer_id ;
select * from small_customers ;
select * from medium_customers ;
select * from large_customers ;
create table dept60_bonuses
(employee_id number
,bonus_amt number);
insert into dept60_bonuses values (103, 0);
insert into dept60_bonuses values (104, 100);
insert into dept60_bonuses values (105, 0);
commit;
select employee_id, last_name, salary
from hr.employees
where department_id = 60 ;
select * from dept60_bonuses;
merge into dept60_bonuses b
using (select employee_id, salary, department_id
from hr.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);
select * from dept60_bonuses;
rollback;
create table subs(msid number(9),
ms_type char(1),
areacode number(3)
);
create table acct(msid number(9),
bill_month number(6),
areacode number(3),
fee number(8,2) default 0.00);
insert into subs values(905310001,0,531);
insert into subs values(905320001,1,532);
insert into subs values(905330001,2,533);
commit;
select * from subs;
select * from acct;
-- insert
merge into acct a
using subs b on (a.msid=b.msid)
when MATCHED then
update set a.areacode=b.areacode
when NOT MATCHED then
insert(msid,bill_month,areacode)
values(b.msid,'200702',b.areacode);
commit;
select * from subs;
select * from acct;
--update
merge into acct a
using subs b on (a.msid=b.msid)
when MATCHED then
update set a.areacode=b.areacode
where b.ms_type=0;
commit;
select * from subs;
select * from acct;
delete from subs;
delete from acct;
merge into acct a
using subs b
on (a.msid = b.msid)
when MATCHED then
update set a.areacode = b.areacode
when NOT MATCHED then
insert
(msid, bill_month, areacode)
values
(b.msid, '200702', b.areacode);
commit;
select * from subs;
select * from acct;
merge into acct a
using subs b
on (a.msid = b.msid)
when MATCHED then
update set a.areacode = b.areacode
delete where (b.ms_type != 0);
commit;
select * from subs;
select * from acct;
分享到:
相关推荐
1. **UPDATE或INSERT子句成为可选项**:与Oracle 9i不同的是,在Oracle 10g中,`MERGE`语句允许用户只指定`UPDATE`或`INSERT`中的任意一个操作。 2. **支持WHERE子句**:在`UPDATE`和`INSERT`子句后可以添加`WHERE`...
这时,"merge_批量导入MAX.zip" 提供的3ds Max批量导入OBJ插件就显得非常实用。 标题中的"merge_批量导入MAX.zip" 指的是一个压缩包文件,它包含了一个名为"merge_批量导入MAX.mse"的插件。这个插件是为了解决3ds ...
在Oracle 9i版本中,Merge Into 的引入使得开发者能够同时执行更新(UPDATE)和插入(INSERT)操作,而到了Oracle 10g及后续版本,这一功能得到了进一步增强,提供了更丰富的条件选择和操作选项。 ### 知识点详述:...
在Oracle 9i中,`MERGE INTO`语句首次被引入,它允许在同一语句中执行`INSERT`和`UPDATE`操作。到了Oracle 10g,这个功能得到了进一步增强,使其更加强大和灵活。通过`MERGE INTO`,可以基于源表和目标表之间的匹配...
Merge 函数的使用方式有三种:只更新不插入、只插入不更新和既插入也更新。 Merge 函数的基本用法 Merge 函数的基本语法结构为: ```sql MERGE INTO 目标表 USING 来源表 ON (条件) WHEN MATCHED THEN 更新操作 ...
首先,需要使用Oracle 9i及其以后版本支持的merge into语句,该语句可以实现insertOrUpdate的功能。然后,使用Mybatis的动态SQL语法foreach循环插入,待插入的实体bean的List通过查询数据库dual形成表。foreach的 ...
在Oracle数据库中,`MERGE INTO`语句是一种强大的数据操作工具,它允许你在一个步骤中执行更新(UPDATE)和插入(INSERT)操作,从而提高了数据处理的效率和灵活性。这个命令尤其适用于需要同步两个表的数据时,比如...
Oracle数据库提供了一系列工具来帮助管理员检测和处理死锁。 ##### 3.1 死锁日志记录 当Oracle数据库检测到死锁时,会在警报日志文件(alert.log)中记录相关信息。这些信息对于分析死锁的原因至关重要。例如,在...
为了解决这一问题,Oracle 引入了 `MERGE` 语句,它允许用户在一个步骤中同时执行这两种操作,从而大大提高了数据处理的效率和准确性。 #### 三、`MERGE` 语句的结构 `MERGE` 语句的基本结构如下: ```sql MERGE ...
非常经典的SQL经验,适合于数据库初学者及长期从事软件开发者
在 Oracle 数据库中,Merge Into 语句是一种非常有用的功能,它主要用来合并 update 和 insert 语句,即用一个表中的数据来修 改或插入到另一个表中。Merge Into 语句的主要原则是“有则更新,无则插入”。 Merge ...
Oracle的MERGE语句是一种强大的数据操作工具,它在Oracle9i版本中被引入,用于合并UPDATE和INSERT操作。在处理需要根据特定条件更新或插入数据的场景时,MERGE语句提供了高效的解决方案,尤其适合那些需要在单个SQL...
oracle使用 merge 更新或插入数据(总结)
1)主要功能 提供有条件地更新和插入数据到数据库表中 如果该行存在,执行一个UPDATE操作,如果是一个新行,执行INSERT操作 — 避免了分开更新 — 提高性能并易于使用 — 在数据仓库应用中十分有用 2)MERGE语句的...
WinMerge是一款开源的文件和文件夹比较软件,适用于Windows操作系统。它以其直观的用户界面和强大的对比功能,使得文件比较变得简单易行。通过对文件内容的逐行比较,WinMerge能清晰地标识出两份文件之间的差异,并...
merge 详解 及实例 优点: — 避免了分开更新 — 提高性能并易于使用 — 在数据仓库应用中十分有用 — 使用merge比传统的先判断再选择插入或更新快很多
如果需要在MySQL中实现记录不存在则insert,不存在则update操作。可以使用以下语句: 更新一个字段: INSERT INTO tbl (columnA,columnB,columnC) VALUES (1,2,3) ON DUPLICATE KEY UPDATE columnA=IF(columnB>0,...
oracle同一个表中使用merge