oracle update 操作方法介紹與對比

2021-07-30 08:01:07 字數 1083 閱讀 7996

update table_name set col_name=? where col_name=?;

例如:update table1 set name=『小三』 where id=11;

update (select......) set col_name=?;

注:只是將 標準語法中確定的表變成了 通過select 語句查詢到的乙個臨時檢視

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(?.....);

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表關聯且被跟新錶不是通過關聯主鍵關聯的、更新需要進行多條件判斷的,採用此法更優;

快速游標更新法:多表關聯邏輯複雜的,採用此法更優;

oracle update多表關聯

update a.a3 a.a3 b.b3 的問題 表a 結構 a1 a2 a3 表b 結構 b1,b2,b3 其中 a1 b1 為pk 切值相同 就是可以使用a1 b1 了.請問用sql 語句或過程該如何實現如下的功能?更新a 表的 a3 用a.a3 與b.b3之和更新.3 update a se...

oracle update太慢優化

tb e zw nrllb temp 量700225 gsm user 量109398337 優化前 兩種update 說明 gsm user是檢視存在gsm user id索引,tb e zw nrllb temp有user id索引,使用以下兩種方法都更新時間超5h 導致不能更新成功 1upda...

oracle UPDATE 多表關聯更新

update customers a set city name select b.city name from tmp cust city b where b.customer id a.customer id where exists select 1 from tmp cust city b ...