首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

SQL 更新課程授課教師:多表關聯 UPDATE 寫法詳解

     編輯:程式設計疑難解答

表結構回顧

  • Course(Cno, Cname, Tno) — 課程表,Tno 為教師編號外鍵
  • Teacher(Tno, Tname) — 教師表

標準寫法(子查詢)

UPDATE Teacher
SET Tname = '張三'
WHERE Tno = (
    SELECT DISTINCT Tno
    FROM Course
    WHERE Cno = '002'
);

替代寫法(JOIN 更新,MySQL/PostgreSQL/SQL Server 語法略異)

-- MySQL
UPDATE Teacher t
JOIN Course c ON t.Tno = c.Tno
SET t.Tname = '張三'
WHERE c.Cno = '002';

-- SQL Server
UPDATE t
SET t.Tname = '張三'
FROM Teacher t
JOIN Course c ON t.Tno = c.Tno
WHERE c.Cno = '002';

-- Oracle (MERGE 或 關聯子查詢)
UPDATE Teacher t
SET t.Tname = '張三'
WHERE EXISTS (
    SELECT 1 FROM Course c WHERE c.Tno = t.Tno AND c.Cno = '002'
);

關鍵注意點

  1. 唯一性保證:子查詢必須返回單行,若課程號對應多教師需業務確認邏輯(通常一課一教師)。
  2. 事務控制:生產環境建議顯式開啟事務,驗證影響行數後再提交。
  3. 索引優化:Course.Cno、Teacher.Tno 應建立索引,加速關聯查詢。
  4. 防誤刪:先跑 SELECT * FROM Teacher WHERE Tno = (SELECT Tno FROM Course WHERE Cno='002') 確認目標記錄。

掌握多表 UPDATE 寫法,是後端開發與數據治理的基本功。

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