外连接说明

外连接

外连接分为三种:左外连接、右外连接、完全外连

1、 左外连接 (left join - on)(如果左侧的表完全显示我们就说是左外连接)

基本语法:

select 列名1,列名2,.. from 表1 left join 表2 on 条件;

或者

select列名1,列名2,.. from 表1,表2 where 条件1=条件2(+);

2、 右外连接 (right join - on)(如果右侧的表完全显示我们就说是右外连接)

基本语法:

select 列名1,列名2,.. from 表1 right join 表2 on 条件;

或者

select列名1,列名2,.. from 表1,表2 where 条件1(+)=条件2;

3、完全外连 (full outer join - on)(完全显示两个表,没有匹配的记录置为空)

基本语法:

select 列名1,列2,.. from 表1 full outer join 表2 on 条件;

创建两张表做测试使用stu/exam表

create table stu (id number,name varchar2(32));

insert into stu values(1,'jack');

insert into stu values(2,'tom');

insert into stu values(3,'kity');

insert into stu values(4,'nono');

create table exam (id number,grade number);

insert into exam values(1,56);

insert into exam values(2,76);

insert into exam values(11,8);

外连接

1、内连接案例(显示两表ID匹配的)

基本语法:select 字段1,字段2... 表名1 inner join 表名2 on 条件;

2、左连接(显示所有人的成绩,如果没有成绩,也要显示该人的姓名和id号,成绩显示为空)

SQL>select s.id,s.name,e.grade from stu s left join exam e on s.id=e.id;

SQL>select s.id,s.name,e.grade from stu s,exam e where s.id=e.id(+);

3、右外连接(显示所有成绩,如果没有名字匹配,显示空)

SQL>select s.id,s.name,e.grade from stu s right join exam e on s.id=e.id;

SQL>select s.id,s.name,e.grade from stu s,exam e where s.id(+)=e.id;

小结:实际上左外连接和右外连接是可以互为转换的。

4、完全外连接(显示所有成绩和所有人的名字,如果没有相应的匹配值,则显示空)

SQL>select s.id,s.name,e.grade from stu s full outer join exam e on s.id=e.id;

原文地址:https://www.cnblogs.com/roger112/p/7715612.html