위로 아래

JOIN

  1. 하나의 테이블로는 원하는 컬럼 정보를 참조할 수 없는 경우에 관련된 테이블을 논리적으로 결합하여 
    원하는 컬럼을 참조할 수 있는 방법
  2. 논리적으로 결합되는 2개 이상의 테이블에는 반드시 공통 컬럼이 존재해야 하며 
    2개의 컬럼은 데이터 타입과 공통된 데이터를 포함해야 한다.

 

EQUI조인

  1. JOIN이 없는 조인
  2. 옛날 조인이라 이제는 'JOIN'이라는 말이 실제로 쓰이는 표준 조인을 쓴다.
-- EQUI 조인
SELECT e.empno, e.ename, d.dname
FROM emp e, dept d;

 

cross조인

  1. 오라클이전 버전의 카르테시안(CARTESIAN)조인 기법의 명칭이 CROSS조인으로 바뀐것
  2. 2개 이상의 테이블이 공통 컬럼을 기준으로 결합되는 것이 아니라 순차적으로 읽혀지지는 형태
SELECT empno, ename, dname
FROM emp
CROSS JOIN dept;


-- 같은 결과 EQUI 조인
SELECT e.empno, e.ename, d.dname
FROM emp e, dept d;

 

 

natural 조인

  1. 2개 이상의 테이블이 공통 컬럼을 기준으로 논리적으로 결합되는 전형적인 조인기법
  2. EQUI 조인 기법과 같은 의미
  3. 서로 다른 테이블에 있는 컬럼들의 정보를 알고 싶을 때 쓰는 방법
  4. natural 조인시 공통 컬럼을 정의하지 않으면 오라클 서버는 해당 테이블의 모든 정보를 대상으로 공통컬럼을 분석하여 논리적으로 결합해 줌
-- 각 직원의 이름과 사원번호, 부서명을 알고 싶을 때 하는 방법
-- emp 테이블에는 부서명이 없고 부서 번호만 있음
-- dept 테이블에도 부서번호가 있으므로 두 개를 기준으로 조인함

SELECT empno, ename, dname, deptno
FROM emp
NATURAL JOIN dept;


-- 같은 결과 
SELECT e.empno, e.ename, d.dname, d.deptno
FROM emp e, dept d
WHERE e.deptno = d.deptno;

 

 

JOIN ~ USING 절

SELECT e.empno, e.ename, d.dname
FROM emp e
JOIN dept d
USING (deptno);

 

 

 

JOIN ~ ON절 (left, right)

  1. 이전 버전에서 self조인기법과 동일한 기능
  2. 하나의 테이블에 2번 이상 반복적으로 사용되고 참조해야 할 컬럼이 자신의 테이블에 있는 다른 컬럼인 경우
  3. 하나의 테이블을 서로 다른 테이블처럼 논리적으로 결합하여 사용
SELECT e.empno, e.ename, e.mgr, d.ename
FROM emp e, emp d
WHERE e.mgr = d.empno;


SELECT e.empno, e.ename, e.mgr, d.ename
FROM emp e
JOIN emp d
ON e.mgr = d.empno;

 

 

 

outer조인

오라클 이전버전에서 사용되던 OUTER조인기법과 동일하고 향상된 기능이 추가

2개 이상의 테이블이 조인될 때 어느 한 쪽의 테이블에는 해당하는 데이터가 존재하는데, 다른 쪽 테이블에는 데이터가 존재하지 않을 경우 그 데이터는 출력되지 않는다. 이를 해결하기 위해 OUTER 조인 기법이 등장했다.

데이터가 존재하지 않는 쪽 테이블에 (+) 기호를 정의하면 데이터가 존재하든 하지 않은 테이블의 모든 데이터가 화면에 출력

Left Outer Join

Right Outer Join

SELECT empno, ename, d.deptno, dname
FROM emp e LEFT OUTER JOIN dept d
ON e.deptno = d.deptno
ORDER BY deptno;

 

 

 

 

SELECT empno, ename, d.deptno, dname
FROM emp e RIGHT OUTER JOIN dept d
ON e.deptno = d.deptno
ORDER BY deptno;