建立兩張關聯表:員工基本資料表 mytable 與文章發表記錄表 title。
-- 員工表
CREATE TABLE mytable (
name VARCHAR(20),
sex CHAR(1),
birth DATE,
birthaddr VARCHAR(20)
);
-- 文章表
CREATE TABLE title (
writer VARCHAR(20) NOT NULL,
title VARCHAR(40) NOT NULL,
senddate DATE
);
當資料分散在多張表,需透過共同欄位(外鍵關聯)進行組合查詢。MySQL 支援多種 JOIN 型態:
-- 查詢 abccs 的姓名、性別與文章標題
SELECT m.name, m.sex, t.title
FROM mytable m
INNER JOIN title t ON m.name = t.writer
WHERE m.name = 'abccs';
結果:
+-------+------+-------+
| name | sex | title |
+-------+------+-------+
| abccs | f | a1 |
| abccs | f | a2 |
+-------+------+-------+
SELECT m.name, m.sex, t.title
FROM mytable m
LEFT JOIN title t ON m.name = t.writer;
SELECT m.name, m.sex, t.title
FROM mytable m
RIGHT JOIN title t ON m.name = t.writer;
查詢文章 a2 的作者、出生地與出生日期:
SELECT t.title, t.writer, m.birthaddr, m.birth
FROM mytable m
INNER JOIN title t ON m.name = t.writer
WHERE t.title = 'a2';
表別名.欄位名 避免歧義FROM a,b WHERE...),改用標準 JOIN 語法EXPLAIN 分析執行計畫,確認是否走索引實際專案中常見多表關聯場景:
掌握 JOIN 操作是 SQL 進階的關鍵門檻,建議大量練習各類關聯查詢場景。