oracle update 操作方法介绍与对比


本文内容取自百度文库

连接地址:https://wenku.baidu.com/view/c94f67df195f312b3169a558.html 



oracle 更新操作的5种方式:


1.标准update 语法:

UPDATE TABLE_NAME SET COL_NAME=? WHERE COL_NAME=?;

例如:update table1 set name=‘小三’ where id=11;


2.inline view 更新法:

UPDATE (SELECT......) SET COL_NAME=?;

注:只是将 标准语法中确定的表变成了 通过select 语句查询到的一个临时视图


3.merge 更新法(oracle 特有语句)

MERGE INTO TABLE_NAME A

USING(TABLE|VIEW|SUB_QUERY) B

ON(连接条件 A.COL=B.COL.....)

WHEN MATCHED THEN

UPDATE A SET COL1=?

WHEN NOT MATCHED THEN

INSERT(COL.....) VALUES(?.....);


4.快速游标更新法

BEGIN

FOR CR IN (查询语句) LOOP   --循环

--更新语句

END LOOP; --结束循环

END;

oracle 支持快速游标:不需要定义直接把游标写道for循环中

例子:

BEGIN

FOR CR IN (SELECT A.ROWID,B.JOIN_STAATE FROM

                       T_JOIN_SITUATION A,T_PEOPLE_INFO B

                       WHERE A.PEOPLE_NUMBER=B.PEOPLE_NUMBER

                       AND A.YEAR='2011' AND A.CITY_NUMBER='M0000' AND A.TOWN_NUMBER='M1500') LOOP

UPDATE T_JOIN_SITUATION SET JOIN_STATE=CR.JOIN_STATE WHERE ROWID=CR_ROWID;

END LOOP;

END;


比较:

标准update:做单表更新或简单的语句采用此方案更优;

inline view:做2表关联且被更新表通过关联主键关联,采用此法更优;

merge:做2表关联且被跟新表不是通过关联主键关联的、更新需要进行多条件判断的,采用此法更优;

快速游标更新法:多表关联逻辑复杂的,采用此法更优;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值