[데이터베이스/DB] 선택적 조인, 외부 조인(OUTER JOIN) 사용법

외부 조인(OUTER JOIN)

내부 조인(INNER JOIN)을 사용할 경우 필연적으로 조인이 안 되는 데이터가 발생할 수 있다. 내부 조인 자체가 특정 컬럼 값이 같은 조건을 찾아 조인하기 때문이다.

외부 조인(OUTER JOIN)은 조인이 안되는 데이터까지 선택적으로 포함시켜 조인할 수 있다.

사용 문법은 이렇다.

SELECT 칼럼... FROM 테이블1 (별칭) LEFT/RIGHT/FULL OUTER JOIN 테이블2 (별칭)
ON 조인 조건;

여기서 LEFT, RIGHT, FULL을 보면 알 수 있듯 외부 조인은 이 3 가지 방법으로 나뉜다. 의외로 단순하다. 해당 문장을 기준으로 왼쪽 테이블이냐 오른쪽 테이블이냐를 선택한다.

LEFT OUTER JOIN을 하면 해당 문장을 기준으로 왼쪽(테이블1)의 데이터를 모두 불러온다. RIGHT OUTER JOIN을 하면 오른쪽(테이블2)의 데이터를 모두 불러온다. FULL OUTER JOIN을 사용하면 좌, 우 테이블의 모든 데이터를 읽어 조인한다.

아래 두 테이블을 OUTER JOIN 해보자.

 

customer 테이블

 

orders 테이블

 

-- 외부 조인(RIGHT)
SELECT * FROM CUSTOMER RIGHT OUTER JOIN ORDERS
ON CUSTOMER.CUSTID = ORDERS.CUSTID;

 

 

 

ORDERS 테이블에 있는 모든 데이터가 포함된 게 확인된다. 반면 CUSTOMER 테이블에서는 CUSTID 5가 빠졌다.

 

-- 외부 조인(LEFT)
SELECT * FROM CUSTOMER LEFT OUTER JOIN ORDERS
ON CUSTOMER.CUSTID = ORDERS.CUSTID;

 

 

 

LEFT JOIN을 실행하자 CUSTOMER의 모든 CUSTID 값이 포함됐다.

 

-- 외부 조인(FULL)
SELECT * FROM CUSTOMER FULL OUTER JOIN ORDERS
ON CUSTOMER.CUSTID = ORDERS.CUSTID;

 

FULL OUTER JOIN을 수행하면 CUSTOMER 테이블과 ORDERS 테이블에 있는 모든 CUSTID 값이 포함된다.

 

반응형

댓글

Designed by JB FACTORY