[CS] 조인의 종류

눈치없어·2025년 5월 27일

조인(Join)
둘 이상의 테이블을 하나로 묶어 결과를 출력하는 SQL 연산

관계형 DB: JOIN
NoSQL(MongoDB): $lookup (권장 X)

MongoDB는 조인 성능이 떨어지므로 조인 작업이 많은 경우 RDBMS 사용 권장


조인의 대표 유형 4가지

종류설명
INNER JOINA와 B 모두에 존재하는 데이터만 출력 (교집합)
LEFT OUTER JOINA는 전부 출력, B는 일치하는 경우만 출력
RIGHT OUTER JOINB는 전부 출력, A는 일치하는 경우만 출력
FULL OUTER JOINA, B 모두 출력, 일치하지 않는 행도 포함 (합집합)


내부 조인 (INNER JOIN)

  • 양쪽 테이블에서 일치하는 레코드만 결과에 포함 (즉, 교집합)
SELECT * FROM TableA A
INNER JOIN TableB B ON A.key = B.key;


왼쪽 조인 (LEFT OUTER JOIN)

  • TableA의 모든 레코드 + TableB에서 일치하는 레코드
  • TableA 기준, 일치하지 않는 B의 값은 NULL
SELECT * FROM TableA A
RIGHT JOIN TableB B ON A.key = B.key;


오른쪽 조인 (RIGHT OUTER JOIN)

  • TableB의 모든 레코드 + TableA에서 일치하는 레코드
  • TableB 기준, 일치하지 않는 A의 값은 NULL
SELECT * FROM TableA A
RIGHT JOIN TableB B ON A.key = B.key;


합집합 조인 (완전 외부 조인 / FULL OUTER JOIN)

  • TableA + TableB 전체
  • 양쪽 테이블에서 일치하는 레코드는 병합
  • 일치하지 않는 쪽은 NULL로 채워짐
SELECT * FROM TableA A
FULL OUTER JOIN TableB B ON A.key = B.key;

MySQL에서는 FULL OUTER JOIN 미지원 → UNION 사용으로 대체

SELECT * FROM TableA A
LEFT JOIN TableB B ON A.key = B.key
UNION
SELECT * FROM TableA A
RIGHT JOIN TableB B ON A.key = B.key;



참고: 북스터디 - 면접을 위한 CS 전공지식 노트 (Chapter 4-6)

profile
dock 사이즈 다르잖아

0개의 댓글