MySQL:串連查詢

來源:互聯網
上載者:User

標籤:round   關係   bsp   img   思路   image   nbsp   通過   多表串連   

每個實體,一個表

當一個業務需要多個實體的資料,顯然需要多張表在一起使用,即將多張表的記錄串連起來。

1. 總體思路:

    先將所有資料按照某種條件,串連起來,再進行篩選處理。

2. 分類方式:

   根據串連的條件不同,分為一下幾類:

   ① 內串連(Inner):要求串連的多個資料都必須存在,才能進行串連。

       【舉個栗子】如下三張表,分別記錄了老師的資訊,班級資訊,以及老師們的代課情況。

                        此時,若想獲得所有老師的代課資訊,‘韓信’在表3中有與之配對的記錄(內串連)

                            但發現孫武沒有帶過課,即表1中的‘孫武’在表3中沒有與之配對的記錄(外串連)。

                 

             表1. 所有老師的資訊                            表2. 所有班級的資訊

    

                                  表3. 老師們的代課情況

     【文法】tbl_left inner join tbl_right on 串連條件;

     【舉個栗子】求表1中的所有老師的開始代課時間、代課天數。

     

    tip : 內串連可以省略串連條件,意味著所有左表的資料都要與右表的記錄做一次串連(交叉串連or笛卡爾積串連)。

           此時可以使用cross join代替inner join。

           實際上,可以使用多表查詢的方式,不實用where,做到笛卡爾積。

          在MySQL中,inner join是預設的串連方式,可以省略inner。

      【寫法】1) on(寫法如上一個例子)。

                   2) where(只需把on替換成where即可)。

                          結果一樣,但是邏輯關係不同:where會先形成包含所有串連的笛卡爾積,再在這些資料中進行過濾;

                                              on 會先進行滿足條件的資料過濾,在對過濾後的資料進行串連。

     【using】當有同名欄位時,可以使用 using (欄位名),進行條件約束。   

     【as】給表、欄位起別名,可以把比較長的表名改成比較短的別名,保證簡潔、清晰。

② 外串連(outer):負責串連的資料有一個或多個不存在

      【文法】tbl_name left outer join tbl_name on 串連條件;(也可以使用using,不使用where!!)

        tip : 必須要有串連條件!!(內串連沒有條件=笛卡爾積,但是外串連必須有)

     

    1) 左外串連;(left outer join)

         左串連時,若左表的資料連線不到右表的情況,則左表的資料在最終結果中被保留

              (如,左表中的‘孫武’沒有串連到右表的資料,但是‘孫武’在最終資料中保留了下來);

               若右表資料連線不到左表,則最終結果中,右表資料被丟棄(如,交換兩表的左右順序,發現右表的‘孫武’被丟棄)。

    

    2) 右外串連;

    3) 全外串連(MySQL不支援);

       (左串連)union(右串連);

   ③ 自然串連(natural):通過 MySQL 自己的判斷完成串連過程,無需指明串連條件。

                                     MySQL 使用多表內相同的欄位,作為串連條件。

     【文法】 (表1) natural join (表2);  ----內

                  natural left join ----- 左外

                  natural right join --- 右外

3. 多表串連

MySQL:串連查詢

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.