首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

SQL UPDATE 更新數據實戰:直接賦值更新與嵌套子查詢更新演示

     編輯:Oracle 資料庫相關知識

直接賦值更新

UPDATE scott.emp
SET empno = 8888,
    ename = 'TOM',
    hiredate = '03-9月-2002'
WHERE empno = 7566;
  • 單表多列同時更新
  • WHERE 子句精確定位目標行
  • 執行截圖:

嵌套子查詢更新

UPDATE scott.emp
SET sal = (SELECT sal + 300 FROM scott.emp WHERE empno = 7599)
WHERE empno = 7599;
  • 子查詢返回單值 (標量子查詢)
  • 可引用同表或其他表
  • 子查詢無行 → 目標列置 NULL;多行 → 報錯 ORA-01427
  • 執行截圖:

進階更新模式

模式語法示例注意點
多列子查詢SET (col1,col2) = (SELECT col1,col2 FROM ...)子查詢列數/類型須匹配
相關子查詢SET sal = (SELECT AVG(sal) FROM emp e2 WHERE e2.deptno = emp.deptno)逐行執行,大表慎用
MERGE 更新MERGE INTO target USING source ON (...) WHEN MATCHED THEN UPDATE SET ...單語句完成 UPSERT,性能最優
返回更新行UPDATE ... SET ... WHERE ... RETURNING col INTO :varPL/SQL 獲取變更值

最佳實踐

  • 大批量更新分批次 COMMIT,避免 UNDO 表空間爆滿、鎖升級。
  • 更新主鍵/唯一鍵列極度謹慎,需確保無外鍵引用或級聯更新。
  • 利用 EXPLAIN PLAN 確認索引使用,避免全表掃描更新。
  • 生產環境更新前必備:備份、腳本審核、回滾方案、變更窗口。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved