外链接内连接对应的条件与where条件

1.新建两个相关的实验表,并插入数据
SQL> create table t1(col1 number,col2 varchar2(1));
Table created.

SQL> create table t2(col2 varchar2(1),col3 varchar2(2));
Table created.

SQL> insert into t1 values(1,'A');
SQL> insert into t1 values(2,'B');
SQL> insert into t1 values(3,'C');
SQL> insert into t2 values('A','A2');
SQL> insert into t2 values('B','B2');
SQL> insert into t2 values('D','D2');
SQL> commit;

2.先测试相关的内连接
SQL1
SQL> select t1.col1 c1,t1.col2 c2,t2.col3 c3 from t1 join t2 on(t1.col2=t2.col2 and t1.col1=1);
 
        C1 C2 C3
---------- -- --
         1 A  A2

 SQL2
SQL> select t1.col1 c1,t1.col2 c2,t2.col3 c3 from t1 join t2 on(t1.col2=t2.col2)where t1.col1=1;
 
        C1 C2 C3
---------- -- --
         1 A  A2
从上述结果可以发现,除了表连接之外的额外的限制条件在目标SQL的SQL文本中所处的位置并不会影响该SQL的实际执行结果

3.接着测试一下外链接
在oracle中关键字(+)表示外链接。关键字(+)的位置在目标SQL连接条件中某一个表的连接列后面,其含义是关键字(+)出现在哪个表的连接列后面,就表示哪个表会以NULL值来填充那些不满足连接条件并位于该表的查询列
,此时应该以(+)对面的表作为外链接的驱动表。
SQL3
SQL> select t1.col1 c1,t1.col2 c2,t2.col3 c3 from t1 right join t2 on(t1.col2=t2.col2 and t1.col1=1);
 
        C1 C2 C3
---------- -- --
         1 A  A2
              D2
              B2
 
SQL4
SQL>  select t1.col1 c1,t1.col2 c2,t2.col3 c3 from t1 right join  t2 on(t1.col2=t2.col2) where t1.col1=1;
 
        C1 C2 C3
---------- -- --
         1 A  A2

对于上述右连接中,被驱动表是T1
下面这两条SQL与上面无太多区别,只是把内连接换成了外连接,但因为如此,所以结果也就完全不一样了。对于限制条件 t1.col1=1,他在 SQL3中的SQL文本中在right join所对应的括号内, 这个条件会在表T1和T2做右连接之
就会被应用到表T1,就是在SQL3中,参与右连接的T1表的数据是满足那些 t1.col1=1的数据,而 SQL4中的限制条件,则是在right join 外写了个where来进行条件筛选, 表示了该限制条件 会在表T1和T2做了右连接后,才会被应
用到结果集中。



来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30604784/viewspace-2125032/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/30604784/viewspace-2125032/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值