OUTER JOIN (외부 조인) - oracle, mysql

1. OUTER JOIN 이란?

JOIN 하는 여러 테이블에서 한 쪽에는 데이터가 있고 한 쪽에는 데이터가 없을 때, 데이터가 있는 쪽의 모든 데이터를 가져오면서 데이터가 없는 쪽의 데이터를 JOIN 해서 가져오고 싶을 때 사용한다.

 

2. 예시

TABLE_1

id name
1 짱구
2 철수
3 맹구

 

TABLE_2

id product
1 사탕
3 과자
5 과자

 

TABLE_1 에 OUTER JOIN 하면

id name id product
1 짱구 1 사탕
2 철수 NULL NULL
3 맹구 3 과자

 

3. OUTER JOIN (LEFT, RIGHT, FULL)

3.1. LEFT OUTER JOIN


TABLE_1 에 JOIN 되고, TABLE_1에 없는 값은 NULL 로 보여줌

 

SELECT *
FROM TABLE_1
LEFT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id

 

id name id product
1 짱구 1 사탕
2 철수 NULL NULL
3 맹구 3 과자

 

3.2. RIGHT OUTER JOIN


TABLE_2 에 JOIN 되고, TABLE_2에 없는 값은 NULL 로 보여줌

 

 

SELECT *
FROM TABLE_1
RIGHT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id

 

id name id product
1 짱구 1 사탕
3 맹구 3 과자
NULL NULL 5 과자

 

3.3. FULL OUTER JOIN (ORACLE)


TABLE_1 과 TABLE_2 의 모든 내용 보여주고 없는 값은 NULL 로 보여줌

 

SELECT *
FROM TABLE_1
FULL OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id

 

id name id product
1 짱구 1 사탕
2 철수 NULL NULL
3 맹구 3 과자
NULL NULL 5 과자

* mysql 에는 FULL OUTER JOIN 없음

(SELECT *
FROM TABLE_1
LEFT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id)
union
(SELECT *
FROM TABLE_1
RIGHT OUTER JOIN TABLE_2
ON TABLE_1.id = TABLE_2.id)
반응형

'🧾 SQL' 카테고리의 다른 글

Redis란?  (0) 2022.05.06