Oracle中鏈接與加號(+)的使用

轉自:https://www.cnblogs.com/langtianya/p/7516045.htmlhtml

 

一、左外鏈接(Left outer join/ left join)spa

      left join是以左表的記錄爲基礎的,左表的記錄將會所有表示出來,而右表只會顯示符合搜索條件的記錄。右表記錄不足的地方均爲NULL.htm

用(+)來實現, 這個+號能夠這樣來理解: + 表示補充,即哪一個表有加號,這個表就是匹配表。因此加號寫在右表,左表就是所有顯示,故是左鏈接。blog

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno(+)  -------------- 左鏈接,注意: 用(+) 就要用關鍵字whereclass

二、右外鏈接(right outer join/ right join)效率

和left join的結果恰好相反,是以右表爲基礎的, 顯示右表的全部記錄,在加上左表和右表匹配的結果。 左表不足的地方用NULL填充.基礎

用(+)來實現, 這個+號能夠這樣來理解: + 表示補充,即哪一個表有加號,這個表就是匹配表。因此加號寫在左表,右表就是所有顯示,故是右鏈接。select

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno(+)=b.bno ---------------- 右鏈接,注意: 用(+) 就要用關鍵字where搜索

三、全鏈接(full join)查詢

        左表和右表都不作限制,全部的記錄都顯示,兩表不足的地方用null 填充。 全外鏈接不支持(+)這種寫法。

四、等值查詢

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno

查詢出的結果是左表和右表中bno字段相等的顯示出來。也即出來的結果確定比左、右、全鏈接的結果要少或相等。

五、內聯接查詢   inner join  on (與等值查詢結果是同樣的),但效率要比等值查詢高,由於等值查詢是先笛卡爾積,再根據條件查找。

六、交叉查詢cross join (若是須要條件則用where而不用on)

交叉查詢是用的笛卡爾積,效率較慢select * from student_drb cross join class_drb

等價於select * from student_drb,class_drb

相關文章
相關標籤/搜索