[SQLD/P] LEFT/RIGHT OUTER JOIN

Hyo Kyun Lee·2022년 9월 5일
0

SQLD/P

목록 보기
23/82

1. OUTER JOIN

두개 이상의 테이블을 서로 연결 및 결합하는 쿼리, 나아가 그러한 작업을 일컫는다.

기준이 되는 테이블을 어떻게 위치하고, 이에 따른 결합을 어떻게 할 것인지에 따라 LEFT OUTER JOIN, RIGHT OUTER JOIN으로 분류한다.

실제 결합을 할 경우 보통 기준이 되는 테이블을 먼저 위치시키고 이에 따라 LEFT/RIGHT OUTER JOIN을 하지만 일단 기본적인 개념이 무엇인지 명확히하고 넘어가는게 좋을 것 같다.

2. LEFT OUTER JOIN

A, B 테이블을 각각 왼쪽, 오른쪽에 위치시켜 LEFT OUTER JOIN으로 결합한다고 한다.

이처럼 기준이 되는 테이블을 왼쪽에 위치하고, 왼쪽에 있는 테이블을 기준으로 B를 결합하고 데이터를 보여주는 과정이 LEFT OUTER JOIN이다. 기준이 왼쪽에 있는 테이블이므로, 결합대상인 오른쪽 테이블이 기준 테이블의 COLUMN과 연결되는 값이 없다면 NULL이 출력될 수 있다.

SELECT A.A, B.B
FROM A, B
WHERE A.A = B.B(+)

보통은 SELECT ~ FROM ~ LEFT OUTER JOIN ~ ON 등을 사용하여 LEFT OUTER JOIN하고, 실무에서는 빠르고 간결한 쿼리 작성을 위해 (+)기호를 사용한다.

참고로 (+)기호를 사용할 경우, LEFT OUTER JOIN, ON등과 같은 결합조건을 사용하지 않아도 된다.

3. RIGHT OUTER JOIN

마찬가지로 A,B 테이블을 각각 왼쪽과 오른쪽에 위치하였다고 하고, RIGHT OUTER JOIN을 통해 결합한다고 가정한다.

RIGHT OUTER JOIN은 기준이 되는 테이블이 말그대로 오른쪽 테이블이 된다. 따라서 오른쪽에 위치한 기준 테이블의 COLUMN은 모두 출력되고, 연결되는 왼쪽 테이블(A) COLUMN에 대하여 B테이블 COLUMN과 연결되는 값이 존재하지 않는다면 NULL이 출력된다.

SELECT A.A, B.B
FROM A, B
WHERE A(+) = B

마찬가지로 (+) 기호를 주는 테이블에 따라 RIGHT, LEFT OUTER JOIN을 할 수 있다.

4. 유의사항

LEFT OUTER JOIN과 RIGHT OUTER JOIN은 결합하는 방법이나 방식의 차이일 뿐, 기본적으로 두개 이상의 테이블을 결합하는 과정이라는 점에는 동일하다.

OUTER JOIN하는 테이블이 아무리 많아도, 결국 기준이 되는 테이블과 추출하고자 하는 COLUMN을 명확히 정한다면 무리없이 JOIN을 진행할 수 있다.

LEFT, RIGHT라고 해서 너무 테이블 위치에 신경을 쓰기 보다는 어떤 테이블을 기준으로 할 것이고, 어떤 COLUMN을 결합할 것이고, 해당 테이블의 NULL을 허용할 것인지 등 일단 설계계획을 잘 수립한 후에 JOIN을 수행하는 것이 좋을 것이다.

5. 참고자료

LEFT/RIGHT OUTER JOIN - https://haenny.tistory.com/34

0개의 댓글