1、左外連接(Left outer join/ left join)
left join是以左表的記錄為基礎的,左表的記錄將會全部表示出來,而右表只會顯示符合搜索條件的記錄。右表記錄不足的地方均為NULL.
用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。所以加號寫在右表,左表就是全部顯示,故是左連接。
例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno(+) -------------- 左連接,注意: 用(+) 就要用關鍵字where
2、右外連接(right outer join/ right join)
和left join的結果剛好相反,是以右表為基礎的, 顯示右表的所有記錄,在加上左表和右表匹配的結果。 左表不足的地方用NULL填充.
用(+)來實現, 這個+號可以這樣來理解: + 表示補充,即哪個表有加號,這個表就是匹配表。所以加號寫在左表,右表就是全部顯示,故是右連接。
例子:select a.*,b.bname from student_drb a, class_drb b where a.bno(+)=b.bno ---------------- 右連接,注意: 用(+) 就要用關鍵字where
3、全連接(full join)
左表和右表都不做限制,所有的記錄都顯示,兩表不足的地方用null 填充。 全外連接不支持(+)這種寫法。
4、等值查詢
例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno
查詢出的結果是左表和右表中bno字段相等的顯示出來。也即出來的結果肯定比左、右、全連接的結果要少或相等。
5、內聯接查詢 inner join on (與等值查詢結果是一樣的),但效率要比等值查詢高,因為等值查詢是先笛卡爾積,再根據條件查找。
6、交叉查詢cross join (如果需要條件則用where而不用on)
交叉查詢是用的笛卡爾積,效率較慢select * from student_drb cross join class_drb
等價于select * from student_drb,class_drb
文章列表