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
'TIPS' 카테고리의 다른 글
| 인공지능의 기초 원리부터 고급까지 part.1 (1/4) (0) | 2025.09.08 |
|---|---|
| 실무용 페이징 전략! OFFSET/LIMIT를 넘어 Keyset Pagination까지 (4) | 2025.09.01 |
| WHERE vs HAVING의 차이 – 언제 어떤 걸 써야 할까? (4) | 2025.08.18 |
| 실무에서 인덱스를 똑똑하게 활용하는 전략 (심화편) (14) | 2025.08.11 |
| 실무에서 바로 써먹는 SQL 쿼리 성능 개선 팁 (10) | 2025.08.04 |