Oracle中链接与加号(+)的使用

一、左外链接(Left outer join/ left join)class

      left join是以左表的记录为基础的,左表的记录将会所有表示出来,而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL.效率

用(+)来实现, 这个+号能够这样来理解: + 表示补充,即哪一个表有加号,这个表就是匹配表。因此加号写在右表,左表就是所有显示,故是左链接。基础

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno=b.bno(+)  -------------- 左链接,注意: 用(+) 就要用关键字whereselect

二、右外链接(right outer join/ right join)搜索

和left join的结果恰好相反,是以右表为基础的, 显示右表的全部记录,在加上左表和右表匹配的结果。 左表不足的地方用NULL填充.查询

用(+)来实现, 这个+号能够这样来理解: + 表示补充,即哪一个表有加号,这个表就是匹配表。因此加号写在左表,右表就是所有显示,故是右链接。join

例子:select a.*,b.bname from student_drb a, class_drb b where a.bno(+)=b.bno ---------------- 右链接,注意: 用(+) 就要用关键字whereoss

三、全链接(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

相关文章
相关标签/搜索