為什么使用表連接
-
什么是表連接?
-
如果數據來自多個表,那么可以采用鏈接查詢的方式來實現。因此表連接就是多個表連接合在一起實現查詢效果
-
表連接的原理
-
表連接采用的是笛卡爾乘積,稱之為橫向連接。
-
笛卡爾乘積
-
表連接的基本原理就是采用笛卡爾乘積。笛卡爾乘積是指將兩張表的所有數據相連,最后連接的結果數為兩張表數量的乘積。
-
從上面圖示可以看出表聯接是將兩張表的數據相乘而得到的結果,第一張表的每條記錄都會和第二張表的所有記錄相連。
在數據庫中將多表相連需要使用JOIN關鍵字。
標準結構
-
笛卡爾乘積出來的結果數量太多,其中有不少數據是沒用的。因為我們在建表時為了表示他們的關系,都會建立外鍵來確定關系,所以在表聯接時就要根據其外鍵來過濾沒用的數據。使用ON關鍵字來確定其是否匹配。
完整結構
–mysql中表連接分為:內連接,外鏈接,都是橫向連接 還有oracle的縱向連接
?–使用表連接 ?— 內連接 第一種語法 inner join ? ? inner可以省略
-
select * from 主表名 as 主別名 join 連接表名 as 連接的別名 on 主表名.列名=連接表名.列名 where 條件
— 外鏈接:
定義:外聯接是指不管有沒有匹配,被定義了外聯接的表數據都要出現在結果中。比如左外聯接,那么在JOIN左邊的表就被定義為外聯接,那么此表中所有數據都會出現在查詢結果中。右外聯接則是JOIN右邊的表為外聯接表。全外聯接就是JOIN左右兩張表都是外聯接表。
-
左外聯接
用法:LEFT OUTER JOIN 或 LEFT JOIN -
右外聯接
用法:RIGHT OUTER JOIN 或 RIGHT JOIN -
全外聯接
用法:FULL OUTER JOIN 或 FULL JOIN -
注意:MYSQL不支持全外聯接
? –自連接
定義:自聯接其實就是內聯接或外聯接的一種特例,同樣可以使用INNER JOIN 或 OUTER JOIN。
自聯接所聯接的表是來自于同一張表。
-
舉例:一張存放員工信息的表,每個員工有個直屬領導。當然直屬領導也是員工,所以員工信息和他們的領導信息都再一張表中。下面是表結構: