一、左外链接(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