Database/SQL

외부 조인

등푸른고등어 2023. 8. 21. 15:44

 

 

 

OUTER JOIN은 한 쪽 테이블의 모든 행을 기준으로 다른 테이블을 JOIN합니다.

예를 들어, LEFT OUTER JOIN이라면 왼쪽 테이블의 모든 행을 기준으로 오른쪽 테이블을 JOIN합니다.

 

 


 

 

다음은 OUTER JOIN에 대한 쿼리입니다.

 

-- Oracle LEFT OUTER JOIN --

SELECT
  e.last_name AS 사원명,
  e.employee_id AS 사원번호,
  m.last_name AS 관리자명,
  m.employee_id AS 관리자사번
FROM
  employees e,
  employees m
WHERE
  e.manager_id = m.employee_id (+);
  
 
 
 -- Ansi LEFT OUTER JOIN --
 
SELECT
  e.last_name AS 사원명,
  e.employee_id AS 사원번호,
  m.last_name AS 관리자명,
  m.employee_id AS 관리자사번
FROM
  employees e LEFT OUTER JOIN employees m -- OUTER 키워드 생략 가능 --
  ON e.manager_id = m.employee_id;

 

RIGHT OUTER JOIN도 동일한 개념으로 동작합니다.

 

 

그런데 Ansi JOIN에서만 있는 FULL OUTER JOIN이 있습니다.FULL OUTER JOIN은 두 테이블의 모든 행을 결합하되, NULL값을 모두 포함하여 결합합니다.

 

-- Ansi FULL OUTER JOIN --

SELECT
  e.last_name AS 사원명,
  e.employee_id AS 사원번호,
  m.last_name AS 관리자명,
  m.employee_id AS 관리자사번
FROM
  employees e FULL OUTER JOIN employees m -- OUTER 키워드 생략 가능 --
  ON e.manager_id = m.employee_id;