The purpose of a join is
to combine the data across tables.
A join is actually
performed by the where clause which combines the specified rows of tables.
If a join involves in
more than two tables then oracle joins first two tables based on the joins
condition and then compares the result with the next table and so on.
TYPES
·       
Equi
join
·       
Non-equi
join
·       
Self
join
·       
Natural
join
·       
Cross
join
·       
Outer
join
Ø Left
outer
Ø Right
outer
Ø Full
outer
·       
Inner
join
·       
Using
clause
·       
On
clause
Assume that we have the
following tables.
SQL> select * from
dept;
    DEPTNO DNAME      LOC
     ------ ---------- ----------
        10            mkt        hyd
        20            fin        bang
        30            hr         bombay
SQL> select * from
emp;
       EMPNO  
ENAME      JOB       MGR    
DEPTNO
      ---------- ---------- ----------
---------- ----------
       111        
saketh     analyst           444         10
       222         sudha     clerk                333         20
       333         jagan      manager         111         10
       444         madhu    engineer         222         40
EQUI
JOIN
A join which contains an
‘=’ operator in the joins condition.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp e,dept d where e.deptno=d.deptno;
          EMPNO     ENAME     
JOB    DNAME      LOC
          ---------- ---------- ---------- ----------
----------
            111           saketh    analyst   
mkt        hyd
            333           jagan      manager 
mkt        hyd
            222           sudha      clerk        fin        bang
USING
CLAUSE
SQL> select
empno,ename,job ,dname,loc from emp e join dept d using(deptno);
          EMPNO     ENAME     
JOB    DNAME      LOC
          ---------- ---------- ----------
---------- ----------
            111           saketh    analyst   
mkt        hyd
            333           jagan      manager 
mkt        hyd
            222           sudha      clerk        fin        bang
ON
CLAUSE
SQL>  select empno,ename,job,dname,loc from emp e
join dept d on(e.deptno=d.deptno);
          EMPNO     ENAME   
  JOB    DNAME     
LOC
          ---------- ---------- ----------
---------- ----------
            111           saketh    analyst   
mkt        hyd
            333           jagan      manager 
mkt        hyd
            222           sudha      clerk 
      fin        bang
NON-EQUI
JOIN
A join which contains an
operator other than ‘=’ in the joins condition.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp e,dept d where e.deptno > d.deptno;
          EMPNO     ENAME   
JOB      DNAME      LOC
          ---------- ---------- ----------
---------- ----------
       222   
sudha      clerk          mkt        hyd
       444   
madhu     engineer   mkt       
hyd
       444   
madhu     engineer   fin         
bang
       444   
madhu     engineer   hr          
bombay
SELF
JOIN
Joining the table itself
is called self join.
Ex:
     SQL> select
e1.empno,e2.ename,e1.job,e2.deptno from emp e1,emp e2 where
             e1.empno=e2.mgr;
     EMPNO    
ENAME    JOB      DEPTNO
     ---------- ---------- ----------
----------
       111          jagan      analyst         10
       222          madhu      clerk           40
       333          sudha      manager      20
       444          saketh     engineer     
10
NATURAL
JOIN
Natural join compares all
the common columns.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp natural join dept;
     EMPNO  
ENAME      JOB      DNAME   
LOC
    ---------- ---------- ---------- ----------
----------
       111          saketh     analyst    
mkt        hyd
       333          jagan      manager  
mkt        hyd
       222          sudha      clerk         fin          bang
CROSS
JOIN
This will gives the cross
product.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp cross join dept;
 EMPNO 
ENAME    JOB        DNAME      LOC
----------
---------- ---------- ---------- ----------
       111    
saketh   analyst      mkt       
hyd
       222    
sudha    clerk          mkt        hyd
       333    
jagan     manager   mkt       
hyd
       444    
madhu   engineer   mkt       
hyd
       111    
saketh   analyst      fin          bang
       222    
sudha    clerk          fin          bang
       333    
jagan     manager   fin         
bang
       444    
madhu   engineer   fin         
bang
       111    
saketh   analyst      hr           bombay
       222    
sudha    clerk          hr           bombay
       333    
jagan     manager   hr          
bombay
       444    
madhu   engineer   hr          
bombay
OUTER
JOIN
Outer join gives the
non-matching records along with matching records.
LEFT
OUTER JOIN
This will display the all
matching records and the records which are in left hand side table those that
are not in right hand side table.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp e left outer join dept d
             on(e.deptno=d.deptno);
Or
      SQL> select empno,ename,job,dname,loc
from emp e,dept d where e.deptno=d.deptno(+);
     EMPNO    
ENAME   JOB       DNAME      LOC
     ---------- ---------- ----------
---------- ----------
       111          saketh    analyst       mkt 
      hyd
       333          jagan      manager   
mkt        hyd
       222          sudha     clerk           fin          bang
       444          madhu    engineer
RIGHT
OUTER JOIN
This will display the all
matching records and the records which are in right hand side table those that
are not in left hand side table.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp e right outer join dept d
              on(e.deptno=d.deptno);
Or
      SQL> select empno,ename,job,dname,loc
from emp e,dept d where e.deptno(+) = d.deptno;
     EMPNO   
ENAME     JOB      DNAME     
LOC
     ---------- ---------- ----------
---------- ----------
       111          saketh     analyst      mkt       
hyd
       333          jagan       manager  
mkt        hyd
       222          sudha      clerk          fin          bang
                                                      
hr           bombay
FULL
OUTER JOIN
This will display the all
matching records and the non-matching records from both tables.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp e full outer join dept d
              on(e.deptno=d.deptno);
 EMPNO  
ENAME    JOB        DNAME      LOC
---------- ----------
---------- ---------- ----------
       333    
jagan     manager    mkt       
hyd
       111    
saketh   analyst       mkt        hyd
       222    
sudha    clerk           fin        bang
       444    
madhu   engineer     hr        
bombay
INNER
JOIN
This will display all the
records that have matched.
Ex:
     SQL> select empno,ename,job,dname,loc
from emp inner join dept using(deptno);
     EMPNO    
ENAME   JOB        DNAME   
LOC
     ---------- ---------- ----------
---------- ----------
       111          saketh     analyst      mkt      
hyd
       333          jagan       manager  
mkt       hyd
       222          sudha      clerk          fin         bang
 
 
No comments:
Post a Comment