1. 程式人生 > >MySql高級查詢--連接查詢

MySql高級查詢--連接查詢

select語句 一個 今天 語句 小於號 right sql查詢 就會 查詢

前言

  我們使用SQL查詢不能只使用很簡單、最基礎的SELECT語句查詢。如果想從多個表查詢比較復雜的信息,就會使用高級查詢實現。

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

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

  student_info表:

技術分享圖片

  student_score表:

  技術分享圖片

  一、內連接(INNER JOIN)

  1、等值連接

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

語法:SELECT 列 FROM 表1

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

結果:

  技術分享圖片

  2、非等值連接

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

語法:

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

結果:

  技術分享圖片

  

  二、外聯結

  1、左外連接(LEFT OUTER JOIN)

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

  示例:SELECT A.*, B.*

     FROM student_info A left join student_score B

     ON A.student_id = B.student_id

   結果:

    技術分享圖片

  

2、右外連接(RIGHT OUTER JOIN)

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

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

  結果:

  技術分享圖片

  3、全外連接(FULL JOIN)——MySQL不支持

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

  三、自然連接(NATURAL JOIN)

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

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

  結果:

  技術分享圖片

  

  四、自連接

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

  示例:SELECT B.*

     FROM student_score A, student_score B

     WHERE A.student_id = B.student_id

     AND B.student_score > 80

  

MySql高級查詢--連接查詢