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

SQL 多表管理核心:外鍵、級聯、連接查詢與自連接全解析

     編輯:MySQL 綜合教學

SQL 多表管理核心:外鍵、級聯、連接查詢與自連接全解析

一、外鍵約束

外鍵建立表間引用關係,維護參考完整性。

概念

  • 主表(父表):被引用的表,持有主鍵
  • 從表(子表):引用主表的表,持有外鍵

建表語法

類型語法行為
級聯更新ON UPDATE CASCADE主表主鍵變更 → 從表外鍵自動同步
級聯刪除ON DELETE CASCADE主表記錄刪除 → 從表關聯記錄自動刪除
設為 NULLON DELETE SET NULL主表刪除 → 從表外鍵置 NULL(需外鍵列允許 NULL)
限制/無動作ON DELETE RESTRICT / NO ACTION存在關聯記錄時禁止刪除主表(預設)


SELECT s.sid, c.cid FROM student s, class c;
-- 或
SELECT s.sid, c.cid FROM student s CROSS JOIN class c;

結果行數 = 學生數 × 班級數。通常非預期,避免使用。

2. 內連接

僅返回滿足連接條件的雙方記錄。

SELECT s.sname, c.cid
FROM student s
LEFT OUTER JOIN class c ON s.classid = c.cid;

4. 右外連接

保留右表所有記錄,左表無匹配則 NULL 填充。

-- 員工與上司關係
SELECT e.ename AS employee, m.ename AS manager
FROM employee e
LEFT JOIN employee m ON e.boss_id = m.eid;

多表查詢三步法

  1. 確定涉及哪些表
  2. 確定需要輸出哪些欄位
  3. 確定表間關係(連接條件),N 張表至少 N-1 個條件

效能提示

  • 連接條件列必須建立索引
  • 優先使用 INNER JOIN,優化器可自由調整連接順序
  • 避免在 ON 條件中使用函數或運算,導致索引失效
  • 大表驅動小表:用小表結果集驅動大表索引查找
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved