多表查詢(SQL)
多表查詢
實體資料往往會拆成多個部分,並透過資料庫正規化儲存在多個獨立的資料表中 查詢會變得較為複雜,並且數量多且龐大時可能會出現效能問題
共享同一實體資訊的資料表,需要擁有可唯一識別該實體的主鍵
primary key
常見的主鍵類型為自動遞增整數
節省儲存空間
但也可以是字串或雜湊後的值
只要值是唯一的即可
可以使用唯一鍵結合兩個資料表的行資料
code:sql
SELECT column, another_table_column, …
FROM mytable
INNER JOIN another_table
ON mytable.id = another_table.id
WHERE condition(s)
ORDER BY column, … ASC/DESC
LIMIT num_limit OFFSET num_offset;
INNER JOIN與JOIN完全相同
由於還有OUTER JOIN等等,為求容易閱讀會完整寫出
OUTER JOIN
如果兩張資料表不對稱的時候
A LEFT JOIN B時,保留A表所有列
A RIGHT JOIN B時,保留B表所有列
保留雙方的所有列
code:sql
SELECT column, another_column, …
FROM mytable
INNER/LEFT/RIGHT/FULL JOIN another_table
ON mytable.id = another_table.matching_id
WHERE condition(s)
ORDER BY column, … ASC/DESC
LIMIT num_limit OFFSET num_offset;
OUTER關鍵字是為了SQL-92標準的相容性而保留
因此也會看到有LEFT OUTER JOIN、RIGHT OUTER JOIN或FULL OUTER JOIN的寫法
但OUTER可省略