數據庫-mysql數據連接
阿新 • • 發佈:2017-08-05
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 inset (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 inset (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數據連接