본문 바로가기

DataBase/Oracle

Oracle(6) - JOIN

JOIN은 한개이상의 테이블에서 원하는 값을 얻기 위해서 사용한다. JOIN의 종류에대해서 먼저 알아보자.

종 류 설   명
Equi JOIN 동일 칼럼을 기준으로 조인한다.(inner join, simple join)
NonEqui JOIN 동일 칼럼이 없이 다른 조건을 사용하여 조인한다.
Outer JOIN 조인조건에 만족하지 않은 행도 나타낸다.
Self JOIN 한 테이블 내에서 조인한다.

WHERE 조건절에서 명시한 조건이 FROM절에서 명시한 여러 테이블을 묶는 조건이된다. 이런 JOIN조건은 반드시 묶어야할 테이블보다 하나가 적어야한다. n개의 테이블을 묶어야한다면 n-1개의 조건이 있어야한다.

기본적으로 조인을 하기위해서는 다음과 같은 규칙을 지켜야한다.

  •  PK와 FK열을 통해 다른 테이블의 행과 연결한다.
  •  연결 Key 사용으로 테이블과 테이블이 결합한다.
  •  WHERE절에서 조인 조건을 사용한다.(조인 조건 개수 = 연결 테이블 수 - 1)
  • 명확성을 위해 칼럼 이름 앞에 테이블명 또는 별칭을 사용한다.

1. Equi JOIN
 -
Equi JOIN은 가장많이 사용되는 조인방법으로 두테이블에서 공통적으로 존재하는 칼럼의 값이 일치하는 행을 연결하여 결과를 생성해주는 조인방법이다. 예를들어 DEPT테이블과 EMP테이블의 DEPTNO칼럼의 값이 일치하는 결과를 출력시킬 경우에는 SELECT * FROM EMP, DEPT WHERE EMP.DEPTNO = DEPT.DEPTNO; 이런식으로 사용한다.

2. Non-Equi JOIN
 Non-Equi JOIN은 조인할 테이블 사이에 칼럼의 값이 직접적으로 일치하지 않을 시 사용하는 조인으로 '='를 제외한 연산자를 사용한다.

3. Outer JOIN
 
- Outer JOIN은 조인조건에 만족하지 않는 행도 결과에 나타나게 할때 사용한다. +를 사용한다.
SELECT E.ENAME, D.DNAME, D.DEPTNO FROM EMP E, DEPT D WHERE E.DEPTNO(+) = D.DEPTNO

4. Self JOIN
- Self JOIN은 자기 자신과 조인을 맺는것을 뜻한다. 자기자신의 테이블 이름을 두개 쓰고, 테이블 뒤에 별칭을 입력함으로써 2개의 테이블이라고 인식하게 만든다. WHERE 조건도 JOIN조건처럼 쓰면된다.
SELECT A.ENAME, B.ENAME FROM EMP A, EMP B WHERE A.MGR = B.EMPNO;

'DataBase > Oracle' 카테고리의 다른 글

Oracle(7) - 서브쿼리  (0) 2019.04.19
Oracle(5) - 무결성제약조건  (0) 2019.04.17
Oracle(4) - DML, 트랜잭션  (0) 2019.04.16
Oracle(3) - DDL  (0) 2019.04.16
Oracle(2) - SQL함수  (0) 2019.04.15