正規化設計下,資料分散於多張表。JOIN 依關鍵欄位將相關列組合成臨時結果集,支援跨表查詢。
| 表名 | 欄位 | 說明 |
|---|---|---|
| album | asin, title, artist, price, release, label, rank | 專輯基本資料(asin 為主鍵) |
| track | album, dsk, posn, song | 曲目明細(album 為外鍵關聯 album.asin) |
SELECT ...
FROM album
JOIN track ON album.asin = track.album;
結果集包含兩表所有欄位,僅保留雙方都有匹配的列。
SELECT title, artist
FROM album JOIN track
ON album.asin = track.album
WHERE song = 'Alison';
SELECT artist
FROM album JOIN track ON asin = album
WHERE song = 'Exodus';
欄位名在兩表唯一時可省略前綴,但建議保留(album.asin = track.album)提升可讀性。
SELECT song
FROM album JOIN track ON asin = album
WHERE title = 'Blur';
JOIN ... ON 產生的「虛擬表」包含雙方所有欄位,後續 WHERE/SELECT 直接引用。