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

MySQL 聯表查詢與聯表刪除完整語法指南

     編輯:MySQL 綜合教學

前言

聯表查詢(JOIN)與聯表刪除(Multi-table DELETE)是 MySQL 進階操作核心技能。本文系統整理 INNER/LEFT JOIN、UNION 查詢語法,以及三種聯表刪除模式的標準寫法與版本相容性注意事項。

聯表查詢語法

1. 內連接

SELECT t1.name, t2.salary
FROM employee AS t1
INNER JOIN info AS t2 ON t1.name = t2.name;

2. 左連接(保留左表所有列)

SELECT table1.*
FROM table1
LEFT JOIN table2 ON table1.id = table2.id
WHERE table2.id IS NULL;

經典「找出左表有、右表無」的差集查詢。

3. UNION / UNION ALL

SELECT col FROM table1
UNION
SELECT col FROM table2;  -- 去重
UNION ALL  -- 保留重複

聯表刪除三大模式

模式 1:刪除兩表交集資料

-- 寫法 A
DELETE t1 FROM t1, t2 WHERE t1.id = t2.id;

-- 寫法 B(標準)
DELETE FROM t1 USING t1, t2 WHERE t1.id = t2.id;

模式 2:刪除左表獨有資料(右表無對應)

-- 寫法 A
DELETE t1 FROM t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;

-- 寫法 B
DELETE FROM t1 USING t1 LEFT JOIN t2 ON t1.id = t2.id WHERE t2.id IS NULL;

模式 3:同時刪除兩表符合條件的資料

DELETE t1, t2 
FROM t1 
LEFT JOIN t2 ON t1.id = t2.id 
WHERE t1.id = 25;

關鍵版本相容性陷阱(MySQL 5.0 分水嶺)

場景MySQL < 5.0MySQL ≥ 5.0
刪除別名表需用原表名
DELETE t1,t2 FROM table_name AS t1 ...
可直接用別名
DELETE t1,t2 FROM table_name AS t1 ...

口訣: 5.0 前用表名,5.0 後用別名。實務上建議統一使用 DELETE 表名 FROM ... 寫法,避免版本遷移報錯。

最佳實踐建議

  • 刪除前先用 SELECT 同條件驗證影響範圍。
  • 重要操作務必在交易中執行(START TRANSACTION → DELETE → COMMIT/ROLLBACK)。
  • 大量刪除分批處理,避免鎖表過久。

相關延伸閱讀

  • MySQL CONVERT 函數簡介
  • Linux 下修改 MySQL 字符集的方法
  • 帶您了解 MySQL 變數
  • 帶您深入了解 MySQL 使用者權限
  • MySQL 使用者權限設定方法
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved