기술(Tech, IT)/데이터베이스(Database)

[DB] JOIN - OUTER JOIN

Daniel803 2023. 2. 24. 05:00

 다음은 Explicit JOIN의 나머지 하나인 OUTER JOIN에 대해 알아보자. OUTER JOIN에 대한 설명은 아래와 같다.

: Allows you to specify one of the tables as always contributing to the result. There are 2 types of OUTER JOINs

- LEFT OUTER JOIN and RIGHT OUTER JOIN. OUTER JOINs are joins that return matched values and unmatched values from either or both sides.

: 하나의 테이블을 반드시 결과에 나타나도록 허용할 수 있다. OUTER Join엔 2개의 종류가 있는데 LEFT OUTER JOIN과 RIGHT OUTHER JOIN이다. OUTER JOIN은 조건에 상응하는 갑들과 사응하지 않는 값들을 모두 나타낸다.

 

 아래는 LEFT OUTER JOIN과 RIGHT OUTER JOIN에 대한 설명이고 예시를 통해 이해해보자.

LEFT OUTER JOIN

: returns only unmatched rows from the left table, as well as matched rows in both tables.

: 왼쪽 테이블에선 조건에 상응하지 않는 튜플(row, tuple)을 모두 나타내고 왼쪽과 오른쪽 테이블에서 모두 조건에 상응하는 튜플을 반환한다.

RIGHT OUTER JOIN

: returns only unmatched rows from the right table , as well as matched rows in both tables.

 

SELECT * from student_major AS sm RIGHT OUTER JOIN available_major AS am ON sm.major = m.major; 라는 명령어를 아래 student_major 테이블과 available_major 테이블을 기반으로 입력하면 세번째 결과 테이블을 얻을 수 있다. availalbe_major 테이블로 RIGHT OUTER JOIN을 했기 때문에 available_major에 있는 튜플은 모두 표기가 돼야하기 IS가 표나타났지만 student_major에 이와 상응하는 튜플이 없기 때문에 NULL로 빈칸을 채운 결과가 나타난다.

OUTER JOIN의 일반적인 명령어 포맷(LEFT나 RIGHT을 통해 OUTER JOIN이란걸 알 수 있기에 OUTER는 생략이 가능하다:

SELECT select_list FROM table_1 {LEFT | RIGHT} [OUTER] JOIN table_2 ON join_condition_1 {LEFT | RIGHT} [OUTER] JOIN table_3 ON join_condition_2

 

 

참고

- Database Systems, A Practical Approach to Design, Implementation and Management Sixth Edition

- https://mode.com/sql-tutorial/sql-outer-joins/