連接配接
在真正的應用中經常需要從多個資料表中讀取資料。
如何使用 MySQL 的 JOIN 在兩個或多個表中查詢資料呢
可以在 SELECT, UPDATE 和 DELETE 語句中使用 MySQL 的 JOIN 來聯合多表查詢。
JOIN 按照功能大緻分為如下三類:
- INNER JOIN(内連接配接,或等值連接配接):擷取兩個表中字段比對關系的記錄。
- **LEFT JOIN(左連接配接):**擷取左表所有記錄,即使右表沒有對應比對的記錄。
- RIGHT JOIN(右連接配接): 與 LEFT JOIN 相反,用于擷取右表所有記錄,即使左表沒有對應比對的記錄。
在指令提示符中使用 INNER JOIN
我們在RUNOOB資料庫中有兩張表 tcount_tbl 和 runoob_tbl。兩張資料表資料如下:
執行個體

使用**INNER JOIN(也可以省略 INNER)**來連接配接以上兩張表來讀取runoob_tbl表中所有runoob_author字段在tcount_tbl表對應的runoob_count字段值:
INNER JOIN
WHERE 子句
LEFT JOIN
left join 與 join 有所不同。 LEFT JOIN 會讀取左邊資料表的全部資料,即便右邊表無對應資料。
嘗試以下執行個體,以 runoob_tbl 為左表,tcount_tbl 為右表,了解 MySQL LEFT JOIN 的應用:
以上執行個體中使用了 LEFT JOIN,該語句會讀取左邊的資料表 runoob_tbl 的所有選取的字段資料,即便在右側表 tcount_tbl中 沒有對應的 runoob_author 字段值。
MySQL RIGHT JOIN
MySQL RIGHT JOIN 會讀取右邊資料表的全部資料,即便左邊邊表無對應資料。
嘗試以下執行個體,以 runoob_tbl 為左表,tcount_tbl 為右表,了解MySQL RIGHT JOIN的應用:
RIGHT JOIN
mysql> SELECT a.runoob_id, a.runoob_author, b.runoob_count FROM runoob_tbl a RIGHT JOIN tcount_tbl b ON a.runoob_author = b.runoob_author; ±------------±----------------±---------------+ | a.runoob_id | a.runoob_author | b.runoob_count | ±------------±----------------±---------------+ | 1 | 菜鳥教程 | 10 | | 2 | 菜鳥教程 | 10 | | 3 | RUNOOB.COM | 20 | | 4 | RUNOOB.COM | 20 | | NULL | NULL | 22 | ±------------±----------------±---------------+ 5 rows in set (0.01 sec)
以上執行個體中使用了 RIGHT JOIN,該語句會讀取右邊的資料表 tcount_tbl 的所有選取的字段資料,即便在左側表 runoob_tbl 中沒有對應的runoob_author 字段值。