內連接,外連接,自然連接
高級查詢
l?????? 內連接
l?????? ? 外連接
- ? 左外連接
- ? 右外連接
- ? 完全外連接
l?????? ? 自然連接
內連接
l??????
連接的多表必須有公共列
(
相等連接
)
l??????
通過
INNER JOIN
語法實現
l??????
語法:
??? SELECT?? tab_name1.col_name, tab_name2.col_name….
??? FROM ?tab_name1? (INNER) JOIN? ?tab_name2
???
ON
tab_name1.col = tab_name2.col
還可以加
Where
。。。。。。。。。。。。。。。。。
其中
col
是兩表的公共列
select student_1.studid,marks.studid,studname from student_1 join marks on student_1.studid=marks.studid where studname='
李四
';
與 UNION 區別。。。。。。。。。
? UNION 的兩個結果集的并集,相同的字段。。
select student_1.studid,marks.studid mkstudid,studname from student_1 join marks on student_1.studid=marks.studid;// inner join
select student_1.studid,marks.studid mkstudid,studname from student_1 ,marks
where student_1.studid=marks.studid; //
相等連接
內連接 (INNER JOIN) 使用比較運算符進行表間某 ( 些 ) 列數據的比較操作,并列出這些表中與連接條件相匹配的數據行。根據所使用的比較方式不同,內連接又分為等值連接、自然連接和不等連接三
外連接
左外連接
l?????? 返回滿足連接條件的所有行,而且還會返回不滿足連接條件的連接操作符的左邊表的其他行
l?????? 語法:
?????? ?SELECT?? tab_name1.col_name, tab_name2.col_name….
?????? FROM? tab_name1? LEFT? JOIN?? tab_name2
?????? ON tab_name1.col = tab_name2.col
右外連接
l??????
返回滿足連接條件的所有行,而且還會返回不滿足連接條件的連接操作符的左邊表的其他行
l??????
語法:
??????
?SELECT?? tab_name1.col_name, tab_name2.col_name….
?????? FROM? tab_name1? RIGHT? JOIN?? tab_name2
?????? ON tab_name1.col = tab_name2.col
完全連接
l?????? 不僅返回滿足連接條件的所有行,而且還會返回不滿足連接條件的所有行
l?????? 語法:
??????
?
SELECT?? tab_name1.col_name, tab_name2.col_name….
?????? FROM? tab_name1? FULL? JOIN?? tab_name2
?????? ON tab_name1.col = tab_name2.col
自然連接
???????? ----
自我連接
l?????? 同一張表之間的連接查詢
l?????? 主要用于在參照表上顯示 ? 上下級關系或層次關系
l?????? 語法:
??? select? t1.col_name, t2.col_name
??? from? table1? t1? inner join? table1? t2
??? on? t1.col_name = t2.col_name
posted on 2009-06-02 23:24 luofeng225 閱讀(1680) 評論(0) 編輯 收藏 所屬分類: Oracle