多表查詢(內連接與外連接)


一、多表查詢

  1、多表查詢的作用

    如果一條 SQL 語句查詢多張表,因為查詢結果在多張不同的表中,每張表取一列或多列數據。

  2、多表查詢的分類

     

  3、笛卡爾積現象

    (1)笛卡爾積:有兩個集合A,B。取這兩個集合的所有組成情況。

    (2)消除笛卡爾積現象的影響:使用多表查詢,需要消除無用的數據。

二、內連接

  用左邊表的記錄去匹配右邊表的記錄,如果符合條件的則顯示。如:從表.外鍵 = 主表.主鍵

  1、隱式內連接

    隱式內連接:看不到 JOIN 關鍵字,條件使用  where 指定,從而來消除無用數據

SELECT 字段名 FROM 左表, 右表 WHERE 條件

     Demo:

select * from emp,dept where emp.`dept_id` = dept.`id`;

    

  2、顯示內連接

    顯示內連接:使用 inner join... on 語句,可以省略 inner。

SELECT 字段名 FROM 左表 [INNER] JOIN 右表 ON 條件

     Demo:

select e.`id` 編號,e.`name` 姓名,e.`gender` 性別,e.`salary` 工資,d.`name` 部門名字 from emp e inner join dept d on e.`dept_id` = d.`id` where e.`name`='唐僧';

      

     總結內連接查詢步驟

    ① 確定查詢哪些表

    ② 確定表連接的條件

    ③ 確定查詢的條件

    ④ 確定查詢的字段

    

三、外連接

  1、左外連接

    左外連接:使用 left outer join... on,outer可以省略。

SELECT 字段名 FROM 左表 LEFT [OUTER] JOIN 右表 ON 條件

     查詢的是左表的所有數據以及其交集部分,如果符合條件的則顯示;否則,顯示 null。

      Demo:

select * from dept d left join emp e on d.`id` = e.`dept_id`;  // 使用左外連接查詢

     

  2、右外連接

    右外連接:使用 right outer join...on,outer 可以省略。

SELECT 字段名 FROM 左表 RIGHT [OUTER ]JOIN 右表 ON 條件

      查詢的是右表的所有數據以及交集部分,如果符合條件的則顯示;否則,顯示 null。

    Demo:

select * from dept right join emp on dept.`id` = emp.`dept_id`;  // 使用右外連接查詢

    


免責聲明!

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



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