Oracle join的正确用法描述


  本文标签:Oracle join

  以下的文章主要是通过代码的方式来引出Oracle join的正确用法,其在实际中的应用比例还是占为多数的,如果你对这一新开发的技术,心存好奇的话,以下的文章将会揭开它的神秘面纱  。希望你在浏览完之后会有所收获  。

  1. 8i:  
  2. create table dali.test1(a int,b int);  
  3. create table dali.test2(a int,b int);  
  4. insert into dali.test1 values(1,456);  
  5. insert into dali.test1 values(2,427);  
  6. insert into dali.test2 values(1,45456);  
  7. insert into dali.test2 values(3,45656);  

  

  内连接

  1. select * from dali.test1 a, dali.test2 b where a.a=b.a; 

  左连接

  1. select * from dali.test1 a, dali.test2 b where a.a=b.a(+); 

  右连接

  1. select * from dali.test1 a, dali.test2 b where a.a(+)=b.a; 

  完全连接

  1. select * from dali.test1 a, dali.test2 b where a.a=b.a(+)  
  2. union  
  3. select * from dali.test1 a, dali.test2 b where a.a(+)=b.a; 

  迪卡尔

  1. select * from dali.test1, dali.test2;  
  2. ================================================================== 

  9i和sqlserver一样 left join,right join,full join

  

  分为1. INNER JOIN 2. LEFT JOIN 3. RIGHT JOIN 4.LEFT OUTER JOIN

  首先设定一个我们要用的两个表

  表A 表B

  ID NAME ID CLASS

  1 IBM 1 C1

  2 SONY 3 C3

  3 BMW 4 C4

  1 INNER JOIN: SELECT * FROM A INNER JOIN B ON A.ID=B.ID

  得表 ID NAME CLASS

  1 IBM C1

  3 BMW C3

  对了 就是 两个表的ID都存在并相同 得到这两个表的组合表

  2 LEFT JOIN : SELECT * FROM A LEFT JOIN B ON A.ID=B.ID

  得表 ID NAME CLASS

  1 IBM C1

  2 SONY null

  3 BMW C3

  没晕吧 如果还有方向感 就行 LEFT(左) 得到的是A(left语句的左边的表)的所有记录 而B表对应的记录没有的话也要补齐 (真霸道! 呵呵)

  3 RIGHT JOIN : SELECT * FROM A RIGHT JOIN B ON A.ID=B.ID

  得表 ID NAME CLASS

  1 IBM C1

  3 BMW C3

  4 null C4

  对了RIGHT(右) 得到的是B(right语句的右边的表)的所有记录 而A表对应的记录没有的话也要补齐 (我也翻身了! 呵呵)

  4 FULL OUTER JOIN: SELECT * FROM A FULL OUTER JOIN B ON A.ID=B.ID

  得表 ID NAME CLASS

  1 IBM C1

  2 SONY null

  3 BMW C3

  4 null C4

  上述的相关内容就是对Oracle join的用法的描述,希望会给你带来一些帮助在此方面  。