【Oracle_SQL】oracle常用连接

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/debimeng/article/details/86560762

oracle常用外连接

数据版本:11.2.0.4

解释:
类型              关键字                          含义

内连接            inner join/join            只连接匹配的行

左外连接        left join                      左边的表为主表,主表的全部数据显示;
                                                       右边的表只显示符合条件的,不符合条件的以空值显示

右外连接        right join                    与右连接相反,即右边的表为主表,主表的全部数据显示;
                                                        左边的表只显示符合条件的,不符合条件的以控制显示

全外连接        full join                      显示左右两表的并集,即左右表匹配的数据以及左右两表没有匹配的数据也显示

例子:

创建两个表test_a和test_b来看看具体的效果,语句如下:
create table test_a(tno int,tname varchar2(20));
create table test_b(tno int,tname varchar2(20));

insert into test_a values(1,'a');
insert into test_a values(2,'b');
insert into test_b values(2,'c');
insert into test_b values(3,'d');
commit;

--inner join/join
语句:
select a.tno ano,a.tname aname,b.tno bno,b.tname bname from test_a a
inner join test_b b
on a.tno = b.tno;
结果:

  ANO ANAME BNO BNAME
2 b 2 c

注:由此可看出只显示两个表共同拥有tno的数据行,即只显示匹配的数据;

语句(去掉inner):
select a.tno ano,a.tname aname,b.tno bno,b.tname bname from test_a a
join test_b b
on a.tno = b.tno;
结果:

  ANO ANAME BNO BNAME
2 b 2 c

注:其结果跟带inner 的join一样,由此可知两者等效。

--left join
语句:
select a.tno ano,a.tname aname,b.tno bno,b.tname bname from test_a a
left join test_b b
on a.tno = b.tno;
结果:       

  ANO ANAME BNO BNAME
2 b 2 c
1 a    

                             

注:显示左边表的全部数据以及右边表符合条件的数据。

--right join
语句:
select a.tno ano,a.tname aname,b.tno bno,b.tname bname from test_a a
right join test_b b
on a.tno = b.tno;
结果:

  ANO ANAME BNO BNAME
2 b 2 c
    3 d

注:显示右边表的全部数据以及左边表符合条件的数据。

--full join
语句:
select a.tno ano,a.tname aname,b.tno bno,b.tname bname from test_a a
full join test_b b
on a.tno = b.tno;
结果:

  ANO ANAME BNO BNAME
2 b 2 c
    3 d
1 a    

                        

注:显示左右两表的并集,即左右表匹配的数据以及左右两表没有匹配的数据也显示。

猜你喜欢

转载自blog.csdn.net/debimeng/article/details/86560762