首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle UPDATE 語法與實務範例:單欄、多欄、子查詢更新全攻略

     編輯:Oracle 教學

Oracle UPDATE 語法與實務範例:單欄、多欄、子查詢更新全攻略

標準語法

UPDATE table_name
SET col1 = val1, col2 = val2, ...
WHERE condition;

基本範例:多欄位同步更新

UPDATE infos
SET classno = '1002', stuaddress = '山東萊蕪'
WHERE stuname = '阮小二';

進階場景

1. 子查詢更新 (單欄)

UPDATE emp e
SET sal = (SELECT AVG(sal) FROM emp WHERE deptno = e.deptno)
WHERE job = 'CLERK';

2. 子查詢更新 (多欄,Oracle 專用語法)

UPDATE emp e
SET (sal, comm) = (SELECT AVG(sal), MAX(comm) FROM emp WHERE deptno = e.deptno)
WHERE job = 'CLERK';

3. 關聯更新 (MERGE 替代方案)

MERGE INTO target t
USING source s ON (t.id = s.id)
WHEN MATCHED THEN UPDATE SET t.val = s.val;

效能與避坑指南

  • 索引維護成本:更新索引欄位會導致索引分裂/重組,批次更新建議先 DISABLE 索引再 REBUILD。
  • 避免全表掃描:WHERE 條件確保走索引;大量更新考慮 PARALLEL DML。
  • 鎖爭用:長時間 UPDATE 持有行級鎖,易導致阻塞;拆分批次、縮短交易。
  • 隱式轉換:SET num_col = '100' 導致索引失效,務必型別一致。

驗證更新筆數

SQL> UPDATE infos SET classno='1002' WHERE stuname='阮小二';
1 row updated.
SQL> COMMIT;

SQL*Plus 回顯 N rows updated;PL/SQL 中用 SQL%ROWCOUNT 取得。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved