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

MySQL JOIN 多表查詢實戰:從建表到關聯查詢完整範例

     編輯:MySQL 資料庫相關知識

建立範例資料環境

首先建立兩張關聯資料表:員工基本資料表 emp 與員工部門對照表 emp_dept。

建表語句

CREATE TABLE emp (
    id INT NOT NULL PRIMARY KEY,
    name VARCHAR(10)
);

CREATE TABLE emp_dept (
    dept_id VARCHAR(4) NOT NULL,
    emp_id INT NOT NULL,
    emp_name VARCHAR(10),
    PRIMARY KEY (dept_id, emp_id)
);

測試資料

INSERT INTO emp VALUES
(1, 'Dennis-1'), (2, 'Dennis-2'), (3, 'Dennis-3'),
(4, 'Dennis-4'), (5, 'Dennis-5'), (6, 'Dennis-6'),
(7, 'Dennis-7'), (8, 'Dennis-8'), (9, 'Dennis-9'),
(10, 'Dennis-10');

INSERT INTO emp_dept VALUES
('R&D', 1, 'Dennis-1'),
('DEV', 2, 'Dennis-2'),
('R&D', 3, 'Dennis-3'),
('TEST', 4, 'Dennis-4'),
('TEST', 5, 'Dennis-5');

JOIN 查詢類型示範

INNER JOIN(內連接)

只回傳兩張表都符合條件的資料:

SELECT e.id, e.name, d.dept_id
FROM emp e
INNER JOIN emp_dept d ON e.id = d.emp_id;

LEFT JOIN(左連接)

以左表為主,右表無對應則顯示 NULL:

SELECT e.id, e.name, d.dept_id
FROM emp e
LEFT JOIN emp_dept d ON e.id = d.emp_id;

RIGHT JOIN(右連接)

以右表為主,左表無對應則顯示 NULL:

SELECT e.id, e.name, d.dept_id
FROM emp e
RIGHT JOIN emp_dept d ON e.id = d.emp_id;

實務應用建議

  • 確保連接欄位有索引以提升查詢效能
  • 使用表別名簡化 SQL 可讀性
  • 避免使用 SELECT *,明確指定所需欄位
  • 複雜多表連接時考慮使用 CTE(Common Table Expressions)提升維護性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved