1. 程式人生 > >數據庫-mysql數據連接

數據庫-mysql數據連接

div nic 使用 full join 沒有 獲取 多個 cnblogs 技術分享

一:Mysql 連接的使用

在前幾章節中,我們已經學會了如果在一張表中讀取數據,這是相對簡單的,但是在真正的應用中經常需要從多個數據表中讀取數據。

本章節我們將向大家介紹如何使用 MySQL 的 JOIN 在兩個或多個表中查詢數據。

你可以在 SELECT, UPDATE 和 DELETE 語句中使用 Mysql 的 JOIN 來聯合多表查詢。

JOIN 按照功能大致分為如下三類:

  • INNER JOIN(內連接,或等值連接):獲取兩個表中字段匹配關系的記錄。
  • LEFT JOIN(左連接):獲取左表所有記錄,即使右表沒有對應匹配的記錄。
  • RIGHT JOIN(右連接): 與 LEFT JOIN 相反,用於獲取右表所有記錄,即使左表沒有對應匹配的記錄。
  • full join 全連接 兩個表並集,mysql並沒有直接支持,而是通過unicon實現

二:內連接

  兩個表的交集

  技術分享

MariaDB [test2]> select * from a;
+------+
| name |
+------+
|    1 |
|    2 |
|    3 |
|    4 |
+------+
4 rows in set (0.00 sec)

MariaDB [test2]> select * from b;
+------+
| name |
+------+
|    3 |
|    4 |
|    5 |
|    6 |
+------+
4 rows in
set (0.00 sec) MariaDB [test2]> select * from a inner join b on a.name=b.name; +------+------+ | name | name | +------+------+ | 3 | 3 | | 4 | 4 | +------+------+ 2 rows in set (0.00 sec) MariaDB [test2]> select * from a,b where a.name=b.name; +------+------+ | name | name | +------+------+ | 3 | 3 | | 4 | 4 | +------+------+ 2 rows in
set (0.00 sec)

三:LEFT JOIN

MySQL left join 與 join 有所不同。 MySQL LEFT JOIN 會讀取左邊數據表的全部數據,即便右邊表無對應數據。

技術分享

MariaDB [test2]> select * from a left join b on a.name=b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
|    1 | NULL |
|    2 | NULL |
+------+------+
4 rows in set (0.00 sec)

四: RIGHT JOIN

MySQL RIGHT JOIN 會讀取右邊數據表的全部數據,即便左邊邊表無對應數據。

技術分享

MariaDB [test2]> select * from a right join b on a.name=b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
| NULL |    5 |
| NULL |    6 |
+------+------+
4 rows in set (0.00 sec)

五:full join

  兩個表的並集

  

MariaDB [test2]> select * from a left join b on a.name =b.name union select * from a right join b on a.name =b.name;
+------+------+
| name | name |
+------+------+
|    3 |    3 |
|    4 |    4 |
|    1 | NULL |
|    2 | NULL |
| NULL |    5 |
| NULL |    6 |
+------+------+
6 rows in set (0.00 sec)

數據庫-mysql數據連接