-
MySql - OUTER JOIN(LEFT, RIGHT)DataBase/MySql 2024. 10. 1. 23:50반응형
OUTER JOIN(LEFT, RIGHT)
OUTER JOIN은 SQL에서 테이블 간 데이터를 결합할 때 공통된 열을 기준으로 데이터를 조회하는 방법 중 하나입니다. OUTER JOIN은 두 가지 종류로 나눌 수 있습니다: LEFT OUTER JOIN과 RIGHT OUTER JOIN. 이들은 기준이 되는 테이블의 모든 행을 반환하되, 반대쪽 테이블에 해당하는 데이터가 없을 경우 NULL을 반환합니다.
1. LEFT OUTER JOIN
LEFT OUTER JOIN은 왼쪽 테이블의 모든 데이터를 기준으로 조인합니다. 오른쪽 테이블에서 일치하는 값이 있으면 그 데이터를 반환하고, 일치하는 값이 없으면 NULL로 표시됩니다.
LEFT OUTER JOIN 기본 구조
SELECT A.열1, A.열2, B.열1, B.열2 FROM 테이블A A LEFT OUTER JOIN 테이블B B ON A.공통열 = B.공통열;
예시
앞서 사용한 employees와 departments 테이블을 기준으로 LEFT OUTER JOIN을 실행하면:
SELECT employees.emp_name, departments.dept_name FROM employees LEFT OUTER JOIN departments ON employees.dept_id = departments.dept_id;
결과
emp_name dept_name John HR Jane Engineering Bob NULL Alice Engineering - LEFT OUTER JOIN의 경우 employees 테이블이 왼쪽이므로, 이 테이블의 모든 데이터가 반환됩니다.
- Bob의 dept_id가 departments 테이블에 없기 때문에 dept_name은 NULL로 반환됩니다.
2. RIGHT OUTER JOIN
RIGHT OUTER JOIN은 오른쪽 테이블의 모든 데이터를 기준으로 조인합니다. 왼쪽 테이블에서 일치하는 값이 있으면 그 데이터를 반환하고, 일치하는 값이 없으면 NULL로 표시됩니다.
RIGHT OUTER JOIN 기본 구조
SELECT A.열1, A.열2, B.열1, B.열2 FROM 테이블A A RIGHT OUTER JOIN 테이블B B ON A.공통열 = B.공통열;
예시
이번에는 RIGHT OUTER JOIN을 사용해서 두 테이블을 조인해보겠습니다:
SELECT employees.emp_name, departments.dept_name FROM employees RIGHT OUTER JOIN departments ON employees.dept_id = departments.dept_id;
결과
emp_name dept_name John HR Jane Engineering Alice Engineering NULL Marketing - RIGHT OUTER JOIN의 경우 departments 테이블이 오른쪽이므로, 이 테이블의 모든 데이터가 반환됩니다.
- departments 테이블에 있는 Marketing 부서(104)는 employees 테이블에 해당 부서 직원이 없기 때문에 emp_name이 NULL로 반환됩니다.
OUTER JOIN의 차이점 요약
- LEFT OUTER JOIN: 왼쪽 테이블의 모든 행을 반환하며, 오른쪽 테이블에 해당하는 값이 없으면 NULL로 채움.
- RIGHT OUTER JOIN: 오른쪽 테이블의 모든 행을 반환하며, 왼쪽 테이블에 해당하는 값이 없으면 NULL로 채움.
이 두 가지를 잘 활용하면 두 테이블 간의 관계를 더 유연하게 조회할 수 있습니다.
반응형'DataBase > MySql' 카테고리의 다른 글
MySql - GroupBy 및 ONLY_FULL_GROUP_BY 파헤치기 (0) 2025.04.01 MySql - INNER JOIN (0) 2024.10.01 MySql - Case문 간단정리 (0) 2024.08.05 MySql - GROUP BY, ORDER BY, HAVING 간단 정리 (0) 2024.08.01 MySql - Count, Sum 함수(AVG, MIN, MAX) (0) 2024.08.01