mysql資料庫中左串連,右串連,內連結詳解介紹

來源:互聯網
上載者:User

一般所說的左串連,外串連是指左外串連,右外串連。做個簡單的測試你看吧。
先說左外串連和右外串連:

 代碼如下 複製代碼

[TEST1@orcl#16-12月-11] SQL>select * from t1;

        ID NAME
---------- --------------------
         1 aaa
         2 bbb

[TEST1@orcl#16-12月-11] SQL>select * from t2;

        ID        AGE
---------- ----------
         1         20
         3         30
左外串連:
[TEST1@orcl#16-12月-11] SQL>select * from t1 left join t2 on t1.id=t2.id;

        ID NAME                         ID        AGE
---------- -------------------- ---------- ----------
         1 aaa                           1         20
         2 bbb
右外串連:
[TEST1@orcl#16-12月-11] SQL>select * from t1 right join t2 on t1.id=t2.id;

        ID NAME                         ID        AGE
---------- -------------------- ---------- ----------
         1 aaa                           1         20
                                         3         30

從上面的顯示你可以看出:左外串連是以左邊的表為基準。通俗的講,先將左邊的表全部顯示出來,然後右邊的表id與左邊表id相同的記錄就“拼接”上去,比如說id為1的記錄。如果沒有匹配的id,比如說t1中id為2的t2中就沒有。那邊就以null顯示。
右外串連過程正好相反。

再看內串連(也稱為等值串連):

 代碼如下 複製代碼

[TEST1@orcl#16-12月-11] SQL>select * from t1 inner join t2 on t1.id=t2.id;

        ID NAME                         ID        AGE
---------- -------------------- ---------- ----------
         1 aaa                           1         20

看到沒有?  只有一條記錄。內串連就是只取出符合過濾條件的記錄 也就是t1.id=t2.id  那麼符合t1.id=t2.id的記錄只有id=1這一條,所以只顯示一條。 不像外串連,是將你作為基準的表(左外串連就是左邊表為基準,右外串連就是右邊表為基準)的所有行都顯示出來。

上條sql語句等價於:

 代碼如下 複製代碼

select * from t1,t2 where t1.id = t2.id

補充說明:

1、內聯結(典型的聯結運算,使用像 =  或 <> 之類的比較子)。包括相等聯結和自然聯結。    
內聯結使用比較子根據每個表共有的列的值匹配兩個表中的行。例如,檢索 students和courses表中學生標識號相同的所有行。  
   
2、外聯結。外聯結可以是左向外聯結、右向外聯結或完整外部聯結。    
在 FROM子句中指定外聯結時,可以由下列幾組關鍵字中的一組指定:    
1)LEFT  JOIN或LEFT OUTER JOIN    
左向外聯結的結果集包括  LEFT OUTER子句中指定的左表的所有行,而不僅僅是聯結列所匹配的行。如果左表的某行在右表中沒有匹配行,則在相關聯的結果集行中右表的所有挑選清單列均為空白值。      
2)RIGHT  JOIN 或 RIGHT  OUTER  JOIN    
右向外聯結是左向外聯結的反向聯結。將返回右表的所有行。如果右表的某行在左表中沒有匹配行,則將為左表返回空值。      
3)FULL  JOIN 或 FULL OUTER JOIN
完整外部聯結返回左表和右表中的所有行。當某行在另一個表中沒有匹配行時,則另一個表的挑選清單列包含空值。如果表之間有匹配行,則整個結果集行包含基表的資料值。  

3、交叉聯結  
交叉聯結返回左表中的所有行,左表中的每一行與右表中的所有行組合。交叉聯結也稱作笛卡爾積。   
FROM 子句中的表或視圖可通過內聯結或完整外部聯結按任意順序指定;但是,用左或右向外聯結指定表或視圖時,表或視圖的順序很重要。有關使用左或右向外聯結排列表的更多資訊,請參見使用外聯結。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.