<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          MySQL基礎知識——JOIN關聯(lián)

          共 2484字,需瀏覽 5分鐘

           ·

          2020-10-21 07:38

          點擊關注上方“SQL數(shù)據庫開發(fā)”,

          設為“置頂或星標”,第一時間送達干貨

          JOIN連接的作用

          JOIN 連接用于把來自兩個或多個表的行結合起來,基于這些表之間的共同字段。

          最常見的 JOIN 類型:INNER JOIN(簡單的 JOIN)。INNER JOIN 從多個表中返回滿足 JOIN 條件的所有行。


          注意:連接不是物理實體,它在數(shù)據庫的物理表中是不存在的,只有當MySQL需要使用連接來進行查詢時才會使用到。


          示例數(shù)據庫

          讓我們看看選自 "Orders" 表的數(shù)據:

          然后,看看選自 "Customers" 表的數(shù)據:

          請注意,"Orders" 表中的 "客戶ID" 列指向 "Customers" 表中的"客戶ID"。上面這兩個表是通過 "客戶ID" 列聯(lián)系起來的。

          JOIN實例

          我們想知道每個訂單ID都是哪些客戶訂購的,以及具體的訂單時間。我們運行下面的 SQL 語句(包含 INNER JOIN):

          SELECT o.訂單ID, c.姓名, o.訂單日期
          FROM Orders o
          INNER JOIN Customers c
          ON o.客戶ID=c.客戶ID;

          運行結果如下所示:

          不同的 JOIN

          在我們繼續(xù)講解實例之前,我們先列出您可以使用的不同的 SQL JOIN 類型:

          • INNER JOIN:如果表中有至少一個匹配,則返回行

          • LEFT JOIN:即使右表中沒有匹配,也從左表返回所有的行

          • RIGHT JOIN:即使左表中沒有匹配,也從右表返回所有的行

          • FULL JOIN:只要其中一個表中存在匹配,則返回行


          INNER JOIN

          內部鏈接INNER JOIN關鍵字選擇兩個表中具有匹配值的記錄。

          SQL INNER JOIN 語法

          SELECT column_name(s)FROM table1
          INNER JOIN table2 ON
          table1.column_name = table2.column_name;


          注釋:INNER JOIN 與 JOIN 是相同的,上面的示例就是INNER JOIN


          LEFT JOIN

          SQL左鏈接LEFT JOIN關鍵字返回左表(表1)中的所有行,即使在右表(表2)中沒有匹配。如果在正確的表中沒有匹配,結果是NULL。

          SQL LEFT JOIN 語法

          SELECT column_name(s)
          FROM table1
          LEFT JOIN table2
          ON table1.column_name=table2.column_name;

          或:

          SELECT column_name(s)
          FROM table1
          LEFT OUTER JOIN table2
          ON table1.column_name=table2.column_name;


          注釋:在一些數(shù)據庫中,LEFT JOIN稱為LEFT OUTER JOIN。

          LEFT JOIN示例

          我們想看看客戶Customers表中的所有用戶是否都有下單,可以使用如下查詢語言:

          SELECT c.姓名,o.訂單ID, ?o.訂單日期
          FROM Customers c
          LEFT JOIN Orders o
          ON o.客戶ID=c.客戶ID;

          結果:

          我們發(fā)現(xiàn)劉二,李四,趙七沒有對應的訂單ID和訂單日期,是因為他們沒有在訂單表Orders中存在,沒有匹配上他們的信息。但是由于是左連接,就把主表Customers的信息全部顯示出來了,就是對應上圖的table1。


          RIGHT JOIN

          SQL右鏈接 RIGHT JOIN 關鍵字返回右表(table2)的所有行,即使在左表(table1)上沒有匹配。如果左表沒有匹配,則結果為NULL。

          SQL RIGHT JOIN 語法

          SELECT column_name(s) FROM table1
          RIGHT JOIN table2 ON
          table1.column_name = table2.column_name;

          注釋:在一些數(shù)據庫中,RIGHT JOIN 稱為 RIGHT OUTER JOIN。

          右連接與左連接的主表剛好相反,會將table2中的數(shù)據完全顯示,如果table1中沒有匹配上的就不顯示。



          ?FULL OUTER JOIN

          當左(表1)或右(表2)表記錄匹配時,F(xiàn)ULL OUTER JOIN關鍵字將返回所有記錄。

          注意:?FULL OUTER JOIN可能會返回非常大的結果集!

          SQL FULL OUTER JOIN 語法

          SELECT column_name(s) FROM table1
          FULL OUTER JOIN table2 ON
          table1.column_name = table2.column_name;

          全連接就是將table1和table2的內容完全顯示,不管有沒有匹配上。


          WHERE連接

          除了上面的JOIN連接,我們在上一個子查詢中其實有講解到使用WHERE也可以進行連接。

          例如:要查詢每個客戶的訂單數(shù)量,我們可以這樣寫

          SELECT?
          `姓名`,
          `客戶ID`,
          (
          SELECT?COUNT(*)
          FROM?orders o
          WHERE?o.`客戶ID`=c.`客戶ID`?
          ) AS?'數(shù)量'
          FROM?customers c

          結果為:

          這里使用SELECT COUNT(*)對表中的行進行計數(shù),并且通過提供一條WHERE子句的連接來匹配某個特定的客戶ID 。

          ——End——

          后臺回復關鍵字:1024,獲取一份精心整理的技術干貨
          后臺回復關鍵字:進群,帶你進入高手如云的交流群。
          推薦閱讀
          這是一個能學到技術的公眾號,歡迎關注

          點擊「閱讀原文」了解SQL訓練營
          瀏覽 41
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  在线观看国产一区 | 成人日本一区 | 欧美日韩国产操逼视频 | 日逼网站黄色 | 久热中文字幕无均码在线观看 |