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

SQL 進階教學:表連接(JOIN)核心概念與專輯曲目實戰

     編輯:關於SqlServer

為什麼需要表連接?

正規化設計下,資料分散於多張表。JOIN 依關鍵欄位將相關列組合成臨時結果集,支援跨表查詢。

案例資料模型

表名欄位說明
albumasin, title, artist, price, release, label, rank專輯基本資料(asin 為主鍵)
trackalbum, dsk, posn, song曲目明細(album 為外鍵關聯 album.asin)

內連接(INNER JOIN)語法

SELECT ...
FROM album
JOIN track ON album.asin = track.album;

結果集包含兩表所有欄位,僅保留雙方都有匹配的列。

三大實戰查詢

1. 找出歌名為 'Alison' 的專輯與歌手

SELECT title, artist
FROM album JOIN track
  ON album.asin = track.album
WHERE song = 'Alison';

2. 歌曲 'Exodus' 的演唱者

SELECT artist
FROM album JOIN track ON asin = album
WHERE song = 'Exodus';

欄位名在兩表唯一時可省略前綴,但建議保留(album.asin = track.album)提升可讀性。

3. 專輯 'Blur' 的所有歌曲

SELECT song
FROM album JOIN track ON asin = album
WHERE title = 'Blur';

關鍵觀念

  • JOIN ... ON 產生的「虛擬表」包含雙方所有欄位,後續 WHERE/SELECT 直接引用。
  • 內連接會過濾掉無匹配的列(如無曲目的專輯、無專輯的曲目)。
  • 多表連接時,依序 JOIN,每個 ON 條件只關聯當前兩表。

延伸練習

  1. 列出所有歌手及其專輯數(需 GROUP BY)。
  2. 找出價格最高的專輯及其所有曲目。
  3. 嘗試 LEFT JOIN:列出所有專輯,包含無曲目的專輯。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved