数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;
生活随笔
收集整理的這篇文章主要介紹了
数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【1】等值連接
1)連接:凡是查詢涉及到兩個以上的表,就需要將表連接;
2)就是用where子句做的連接查詢;連接查詢的列名可以不同;
【2】自然連接:
select * from?
a_tbl natual join? b_tbl
這就需要a_tbl 與 b_tbl 有相同的列且值相同;連接查詢的列名可必須相同;
【3】左外連接
select * from?
a_tbl a left join? b_tbl b on? a.id = b.rcrd_id?
以a表為主表進行查詢, 查詢出a表的所有數據, b表中有連接數據則填充,如果沒有則補null;
【4】右外連接:與左外連接類似;
【5】內連接:
左外連接和內連接的交集;
【6】全外連接
左外連接和右外連接的并集;
【注意】內連接與等值連接的區別:
轉自:? http://www.cnblogs.com/huangfr/archive/2012/06/20/2555530.html
注意1)內連接:兩個表(或連接)中某一數據項相等的連接稱為內連接。
等值連接:一般用where字句設置條件,內連接一般用on字句設置條件,但內連接與等值連接效果是相同的。
注意2)內連接與等值連接其實是一回事情(等效)。
經常有人會問到select a.id,b.name from a,b where a.id=b.pid? 與
select a.id,b.name from a inner join b on a.id=b.pid? ?有什么區別,哪個效率更高一些。
1)連接:凡是查詢涉及到兩個以上的表,就需要將表連接;
2)就是用where子句做的連接查詢;連接查詢的列名可以不同;
【2】自然連接:
select * from?
a_tbl natual join? b_tbl
這就需要a_tbl 與 b_tbl 有相同的列且值相同;連接查詢的列名可必須相同;
【3】左外連接
select * from?
a_tbl a left join? b_tbl b on? a.id = b.rcrd_id?
以a表為主表進行查詢, 查詢出a表的所有數據, b表中有連接數據則填充,如果沒有則補null;
【4】右外連接:與左外連接類似;
【5】內連接:
左外連接和內連接的交集;
【6】全外連接
左外連接和右外連接的并集;
【注意】內連接與等值連接的區別:
轉自:? http://www.cnblogs.com/huangfr/archive/2012/06/20/2555530.html
注意1)內連接:兩個表(或連接)中某一數據項相等的連接稱為內連接。
等值連接:一般用where字句設置條件,內連接一般用on字句設置條件,但內連接與等值連接效果是相同的。
注意2)內連接與等值連接其實是一回事情(等效)。
經常有人會問到select a.id,b.name from a,b where a.id=b.pid? 與
select a.id,b.name from a inner join b on a.id=b.pid? ?有什么區別,哪個效率更高一些。
實際上一回事情了。只是內連接是由SQL 1999規則定的書寫方式。兩個說的是一碼事。
注意3)?不過今天有同事說了:? 連接查詢的話,是先篩選數據行,然后再進行笛卡爾積; where子句查詢的話,是先做笛卡爾積,然后再篩選數據行;
總結
以上是生活随笔為你收集整理的数据库表连接总结:等值连接, 自然连接,左外连接,右外连接,内连接,全外连接;的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 广汽埃安 9 月交付新车突破 5 万辆,
- 下一篇: SQL分组取每组前一(或几)条记录(排名