圖解MySQL 內連接、外連接


2.內連接(INNER JOIN)
內連接(INNER JOIN):有兩種,顯式的和隱式的,返回連接表中符合連接條件和查詢條件的數據行。(所謂的鏈接表就是數據庫在做查詢形成的中間表)。例如:下面的語句3和語句4的結果是相同的。
語句1:隱式的內連接,沒有INNER JOIN,形成的中間表為兩個表的笛卡爾積。SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
FROM CUSTOMERS C,ORDERS O
WHERE C.ID=O.CUSTOMER_ID;
語句2:顯示的內連接,一般稱為內連接,有INNER JOIN,形成的中間表為兩個表經過ON條件過濾后的笛卡爾積。SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME
FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID;
3.外連接(OUTER JOIN):
外連不但返回符合連接和查詢條件的數據行,還返回不符合條件的一些行。

 

用兩個表(a_table、b_table),關聯字段a_table.a_id和b_table.b_id來演示一下MySQL的內連接、外連接( 左(外)連接、右(外)連接、全(外)連接)。

MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL)

數據庫表:a_table、b_table

主題:內連接、左連接(左外連接)、右連接(右外連接)、全連接(全外連接)

前提

建表語句:

CREATE TABLE `a_table` (
  `a_id` int(11) DEFAULT NULL,
  `a_name` varchar(10) DEFAULT NULL,
  `a_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
CREATE TABLE `b_table` (
  `b_id` int(11) DEFAULT NULL,
  `b_name` varchar(10) DEFAULT NULL,
  `b_part` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

表測試數據:

 

 

一、內連接

關鍵字:inner join on
語句:select * from a_table a inner join b_table bon a.a_id = b.b_id;
執行結果:

 


說明:組合兩個表中的記錄,返回關聯字段相符的記錄,也就是返回兩個表的交集(陰影)部分。

 

二、左連接(左外連接)

關鍵字:left join on / left outer join on
語句:select * from a_table a left join b_table bon a.a_id = b.b_id;
執行結果:

 


說明:
left join 是left outer join的簡寫,它的全稱是左外連接,是外連接中的一種。
左(外)連接,左表(a_table)的記錄將會全部表示出來,而右表(b_table)只會顯示符合搜索條件的記錄。右表記錄不足的地方均為NULL。

 

三、右連接(右外連接)

關鍵字:right join on / right outer join on
語句:select * from a_table a right outer join b_table b on a.a_id = b.b_id;
執行結果:

 


說明:
right join是right outer join的簡寫,它的全稱是右外連接,是外連接中的一種。
與左(外)連接相反,右(外)連接,左表(a_table)只會顯示符合搜索條件的記錄,而右表(b_table)的記錄將會全部表示出來。左表記錄不足的地方均為NULL。

 


四、全連接(全外連接)

MySQL目前不支持此種方式,可以用其他方式替代解決。
---------------------

原文:https://blog.csdn.net/plg17/article/details/78758593


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM