1. 程式人生 > >sql中什麼時候用內連線查詢,什麼時候用外連線查詢

sql中什麼時候用內連線查詢,什麼時候用外連線查詢

需要查詢兩張表同時存在的資料,使用內連線
需要查詢兩張表中一張表存在,另一張表不存在的時候使用左外連結 或 右外連結
內連線的查詢結果都是滿足連線條件的元組。但有時我們也希望輸出那些不滿足連線條件的元組資訊。比如,我們想知道每個學生的選課情況,包括已經選課的學生(這部分學生的學號在學生表中有,在選課表中也有,是滿足連線條件的),也包括沒有選課的學生(這部分學生的學號在學生表中有,但在選課表中沒有,不滿足連線條件),這時就需要使用外連線。外連線是隻限制一張表中的資料必須滿足連線條件,而另一張表中的資料可以不滿足連線條件的連線方式。3種外連線:
1)左外連線(LEFTOUTER JOIN)
如果在連線查詢中,連線管子左端的表中所有的元組都列出來,並且能在右端的表中找到匹配的元組,那麼連線成功。如果在右端的表中,沒能找到匹配的元組,那麼對應的元組是空值(NULL)。這時,查詢語句使用關鍵字LEFT OUTERJOIN,也就是說,左外連線的含義是限制連線關鍵字右端的表中的資料必須滿足連線條件,而不關左端的表中的資料是否滿足連線條件,均輸出左端表中的內容。
例如:要查詢所有學生的選課情況,包括已經選課的和還沒有選課的學生,查詢語句為
SELECT學生表.學號,姓名,班級,課程號,成績
FROM學生表LEFT OUTER JOIN選課表ON學生表.學號=選課表.學號
左外連線查詢中左端表中的所有元組的資訊都得到了保留。
2)右外連線(RIGHTOUTERJOIN)


右外連線與左外連線類似,只是右端表中的所有元組都列出,限制左端表的資料必須滿足連線條件,而不管右端表中的資料是否滿足連線條件,均輸出表中的內容。
例如:同上例內容,查詢語句為
SELECT學生表.學號,姓名,班級,課程號,成績
FROM學生表RIGHTOUTERJOIN選課表ON學生表.學號=選課表.學號
右外連線查詢中右端表中的所有元組的資訊都得到了保留。
3)全外連線(FULL OUTER JOIN)
全外連線查詢的特點是左、右兩端表中的元組都輸出,如果沒能找到匹配的元組,就使用NULL來代替。
例如:同左外連線例子內容,查詢語句為
SELECT學生表.學號,姓名,班級,課程號,成績
FROM學生表FULL OUTER JOIN選課表ON學生表.學號=選課表.學號
全外連線查詢中所有表中的元組資訊都得到了保留。