高級查詢
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
?
?