Oracle数据库中join连接的作用

student:

class:

1.自然连接:只返回两张表连接部分的匹配项    

-- join / inner join 表名 on 条件
-- 以下三种方法返回的结果都一样
select
* from student s inner join class c on s.classid=c.id; select * from student s join class c on s.classid=c.id; select * from student s,class c where s.classid=c.id;

结果集:

2.笛卡尔集:返回两张表的所有内容

-- 笛卡尔集:字段 = 表1字段 + 表2字段   记录 = 表1记录 * 表2记录 
-- 本次查询结果集: 字段:4+2=6;记录=3*3=9
select
* from student ,class ; select * from student s cross join class c;

结果集:

3.左连接:查询出左边表的全部内容 + 右边表符合条件的内容,不符合的部分以空值代替

select * 
from student s
        left join class c
        on s.classid=c.id ;
        
select *
form student s,class c
where s.classid=c.id(+);   -- 此表达方式只能在Oracle数据库使用,MySQL不支持此左连接

结果集:

4.右连接:左边表符合条件的内容+查询出右边表的全部内容 ,不符合的部分以空值代替

select * 
from student s
        right join class c
        on s.classid=c.id ;
        
select *
form student s,class c
where s.classid(+)=c.id;   -- 此表达方式只能在Oracle数据库使用,MySQL不支持此右连接

结果集:

5.全连接:列出两张表达全部内容,不符合条件的用空值代替

select *     from student s     full join class c     on s.classid=c.id; 

 

posted @ 2019-06-13 14:57  AdvancerJiang  阅读(903)  评论(0编辑  收藏  举报