본문 바로가기

TIPS

다양한 x + JOIN 차이 언제 어떤 걸 써야 할까?

728x90
반응형
SMALL

 

오늘은 다양한 조인문에대해 설명해보려고 합니다.

INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL JOIN 에 대한 설명을 시작해보겠습니다.

 


JOIN이란?

 

JOIN은 두 개 이상의 테이블을 서로 연결해서 데이터를 조회할 때 사용하는 SQL 문법입니다.

실무에서는 하나의 테이블로는 충분하지 않은 경우가 많기 때문에 JOIN의 이해는 필수입니다.

 


JOIN 종류별 설명과 예시

 

INNER JOIN (교집합)

  • 양쪽 테이블에 모두 일치하는 데이터만 결과에 포함됨
  • 가장 자주 쓰임
SELECT *
FROM employees e
INNER JOIN departments d ON e.dept_id = d.id;
 

💬 직원과 부서 모두 정보가 있는 경우만 결과에 포함

 


LEFT JOIN (왼쪽 기준 외부조인)

 

  • 왼쪽 테이블은 모두 출력
  • 오른쪽 테이블에 일치하는 값이 없으면 NULL

 

SELECT *
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.id;
 

💬 부서가 배정되지 않은 직원도 포함됨

 


RIGHT JOIN (오른쪽 기준 외부조인)

 

  • 오른쪽 테이블은 모두 출력
  • 왼쪽에 매칭 없으면 NULL

 

SELECT *
FROM employees e
RIGHT JOIN departments d ON e.dept_id = d.id;
 

💬 아직 직원이 배정되지 않은 부서도 포함됨

 


FULL JOIN (합집합)

 

  • 양쪽 모든 데이터 포함
  • 매칭 안 되는 쪽은 NULL로 출력
  • PostgreSQL, Oracle 지원 / MySQL은 UNION으로 대체
SELECT *
FROM employees e
FULL JOIN departments d ON e.dept_id = d.id;
 

💬 직원이 없는 부서 + 부서가 없는 직원 포함

 


실무 예시

 

-- 직원 정보와 부서명을 함께 보고 싶을 때 (INNER JOIN)
SELECT e.name, d.name AS dept_name
FROM employees e
INNER JOIN departments d ON e.dept_id = d.id;
 
-- 부서가 없는 직원도 함께 출력하고 싶을 때 (LEFT JOIN)
SELECT e.name, d.name AS dept_name
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.id;
 

실무 팁
 
 
목적
추천 JOIN
반드시 양쪽 다 있어야 하는 데이터
INNER JOIN
한쪽 테이블을 기준으로 모두 보고 싶을 때
LEFT / RIGHT JOIN
양쪽 모두 기준으로 확인하고 싶을 때
FULL JOIN / UNION

 

LEFT JOIN 후 WHERE 절을 잘못 쓰면 INNER JOIN처럼 작동할 수 있음 (주의)

 

-- 잘못된 예시: LEFT JOIN 무효화됨
SELECT *
FROM employees e
LEFT JOIN departments d ON e.dept_id = d.id
WHERE d.name = 'IT';
 

이 경우, IT 부서에만 속한 직원만 나오며, 부서 없는 직원은 제외됨

❗ WHERE가 아닌 ON에 조건을 넣는 게 핵심

 


마무리

 

JOIN은 단순히 테이블을 연결하는 도구가 아니라,

어떤 데이터를 보고 싶은지의 의도를 표현하는 방식입니다.

실무에서 자주 쓰이므로 각각의 특징을 명확히 알고 써야 쿼리 성능도 올라갑니다.

 

 

 

 

 

 

 

학스의 개발일지

일상과 코딩 그 사이 어딘가에있는 블로그.. 블로거이자 빅데이터개발자 학스 입니다 JAVA, jQuery, PostgreSQL, MySQL, HIVE, Hadoop 더 많은 정보는 깃허브 주소 https://github.com/hacs2772 를 방문해주세요

hacs2772.tistory.com

\

 

728x90
반응형
LIST