반응형

join을 통해 2개 이상의 테이블을 연결하여 원하는 데이터로 정제 

 

  • EQUIJOIN : 두 개의 테이블 간에 칼럼값들이 정확하게 일치하는 경우 사용(PK = FK)
  • NON - EQUIJOIN : 두 개의 테이블 간에 칼럼값들이 서로 정확하게 일치하지 않는 경우 사용
  • OUTER JOIN : 두 개의 테이블 간의 JOIN 걸었을 때, JOIN 조건 만족하지 않는 경우에도 그 테이블을 보고자 하는 경우(+) 연산자 사용하는 조인
  • SELF JOIN : 같은 테이블에 있는 행동을 JOIN 하는데 사용

 

EQUI JOIN  VS  OUTER JOIN

-- Equi Join 으로 부서 번호를 조회하는 예제
SELECT DISTINCT(e.deptno), d.deptno, d.dname
  FROM emp e, dept d
 WHERE e.deptno = d.deptno;
 
DEPTNO     DEPTNO
------ ----------
    10         10
    20         20
    30         30
 
-- Outer Join 으로 부서 번호를 조회하는 예제
SELECT DISTINCT(e.deptno), d.deptno
  FROM emp e, dept d
 WHERE e.deptno(+) = d.deptno;
 
DEPTNO  DEPTNO
 ------- --------
     10       10
     20       20
     30       30
              40
              
-- ename LIKE 조건절에 (+)연산자가 누락된 경우
SELECT DISTINCT(a.deptno), b.deptno
  FROM emp a, dept b
 WHERE a.deptno(+) = b.deptno
   AND a.ename LIKE '%';
 
DEPTNO     DEPTNO
---------- ----------
        10         10
        20         20
        30         30
 
-- ename LIKE 조건절에 (+)연산자를 추가해야 정상적으로 데이터가 조회 된다. 
SELECT DISTINCT(a.deptno), b.deptno
  FROM emp a, dept b
 WHERE a.deptno(+) = b.deptno
   AND a.ename(+) LIKE '%';
 
DEPTNO  DEPTNO
 ------- --------
     10       10
     20       20
     30       30
              40

 

LEFT OUTER JOIN : 오른쪽 테이블에 조인시킬 컬럼의 값이 없는 경우 사용

-- LEFT OUTER JOIN 조인 예제
SELECT DISTINCT(e.deptno), d.deptno
  FROM dept d 
  LEFT OUTER JOIN emp e
  ON d.deptno = e.deptno;

 

RIGHT OUTER JOIN : 왼쪽 테이블에 조인시킬 컬럼의 값이 없는 경우

-- RIGHT OUTER JOIN 조인 예제
SELECT DISTINCT(e.deptno), d.deptno
  FROM emp e 
 RIGHT OUTER JOIN dept d
    ON e.deptno = d.deptno;

 

FULL OUTER JOIN : 양쪽 테이블 모두 OUTER JOIN 걸어야 하는 경우 사용

-- FULL OUTER JOIN 조인 예제
SELECT DISTINCT(e.deptno), d.deptno
  FROM emp e 
  FULL OUTER JOIN dept d
    ON e.deptno = d.deptno;
반응형

+ Recent posts