Oracle 左连接,右连接,全连接,sql实例


 
 一.首先在本地数据库中执行如下sql操作

create table test_table_user(id number primary key,name varchar(32));
create table test_table_order(id number primary key,des varchar(32),user_id number,foreign key(user_id) references test_table_user(id));
select *from test_table_user;
select *from test_table_order;
insert into test_table_user(id, name) values(1,'cuiyaonan20');
insert into test_table_user(id, name) values(2,'cuiyaonan200');
insert into test_table_user(id, name) values(3,'cuiyaonan2000');
insert into test_table_user(id, name) values(4,'[email protected]');

insert into test_table_order values(1,'cuiyaonan20 des',1);
insert into test_table_order values(2,'cuiyaonan200 des',2);
insert into test_table_order values(3,'cuiyaonan2000 des',3);
insert into test_table_order(id,des) values(4,'[email protected] des');

plsql显示内容如下所示:



 

 

 二. 左外连接

       实现方式1

select * from test_table_user left outer join test_table_order on test_table_user.id = test_table_order.user_id;

显示数据为:

  实现方式2:

select *from test_table_user ,test_table_order where test_table_user.id = test_table_order.user_id(+);

显示数据为



 

    方式1与方式2完全一致, oracle 规范推荐用方式1

三. 右外连接

方式1:

select *from test_table_user right outer join test_table_order on test_table_user.id = test_table_order.user_id;

显示数据为:

  方式2:

select *from test_table_user ,test_table_order where test_table_user.id(+) = test_table_order.user_id;

显示数据位:

 

四.全连接

    执行sql:

select * from test_table_user full join test_table_order on test_table_user.id = test_table_order.user_id;

显示结果:

 五 where 后条件连接

  执行sql:

select *from test_table_user ,test_table_order where test_table_user.id = test_table_order.user_id;

显示结果:

 

猜你喜欢

转载自cuiyaoonan2000.iteye.com/blog/1766031