MySql高級查詢--鏈接查詢

                                                                                                     前言面試

  咱們使用SQL查詢不能只使用很簡單、最基礎的SELECT語句查詢。若是想從多個表查詢比較複雜的信息,就會使用高級查詢實現。學習

常見的高級查詢包括多表鏈接查詢、內鏈接查詢、外鏈接查詢與組合查詢等,今天咱們先來學習最經常使用、面試也很容易被問到的鏈接查詢。spa

  咱們今天以一個簡單的學生信息表(學生ID、學生姓名、學生性別)與一個學生成績表(學生ID、學生成績、成績等級)做演示:3d

  student_info表:blog

       

  student_score表:基礎

  

  1、內鏈接(INNER JOIN)語法

  一、等值鏈接im

  概述:指使用等號"="比較兩個表的鏈接列的值,至關於兩表執行笛卡爾後,取兩表連結列值相等的記錄。查詢

       語法:SELECT 列   FROM 表1  img

                 INNER JOIN 表2

      ON 表1.列 = 表2.列 

       示例:

  SELECT A.*, B.*  FROM student_info A 

  inner join student_score B

       ON A.student_id = B.student_id  

       結果:

  

  二、非等值鏈接

  概述:指使用大於號">"或小於號"<"比較兩個表的鏈接列的值,至關於兩表執行笛卡爾後,取一個表大於或小於另外一個表的連結列值的記錄。

       語法:

       SELECT 列  FROM 表1 INNER JOIN 表2  ON 表1.列 <> 表2.列  

  示例:SELECT A.*, B.*  FROM student_info A

      inner join student_score ON A.student_id > B.student_id 

       結果:

  

  

  2、外聯結

  一、左外鏈接(LEFT OUTER JOIN)

  概述:指將左表的全部記錄與右表符合條件的記錄,返回的結果除內鏈接的結果,還有左表不符合條件的記錄,並在右表相應列中填NULL。

  示例:SELECT A.*, B.*  

       FROM student_info A left join student_score B  

       ON A.student_id = B.student_id

    結果:

    

  

       二、右外鏈接(RIGHT OUTER JOIN)

  概述:與左外鏈接相反,指將右表的全部記錄與左表符合條件的記錄,返回的結果除內鏈接的結果,還有右表不符合條件的記錄,並在左表相應列中填NULL。

  示例:SELECT A.*, B.*  FROM student_info A right join student_score B  ON A.student_id = B.student_id  

  結果:

  

  三、全外鏈接(FULL JOIN)——MySQL不支持

  概述:指將左表全部記錄與右表全部記錄進行鏈接,返回的結果除內鏈接的結果,還有左表與右表不符合條件的記錄,並在左表與右表相應列中填NULL。

  3、天然鏈接(NATURAL JOIN)

  概述:指自動將表中相同名稱的列進行記錄匹配。

  示例:SELECT A.*, B.*  FROM student_info A natural join student_score B 

  結果:

  

  

  4、自鏈接

  概述:指用表的別名實現表自身的鏈接。

  示例:SELECT B.*  

       FROM student_score A, student_score B

      WHERE A.student_id = B.student_id

     AND B.student_score > 80  

相關文章
相關標籤/搜索