본문 바로가기
Daily Dev Q&A 정리 템플릿

26.01.16 inner조인과 outter조인이란?

by teg0 2026. 1. 16.

조인(Join)이란?

두 개 이상의 테이블을 연결하여 하나의 통합된 데이터를 조회하는 기술이다. 데이터베이스는 중복을 최소화하기 위해 데이터를 쪼개어 저장(정규화)하는데, 이를 다시 합쳐서 의미 있는 정보를 만들 때 사용한다. 크게 INNER JOINOUTER JOIN으로 나뉜다. (물론, join에 cross, self join도 있다.)

 

 

INNER JOIN (내부 조인)

INNER JOIN은 두 테이블에서 공통된 값을 가진 행들만 결합하여 반환한다. 즉, 교집합이라고 생각하면 이해가 쉽다.

  • 특징: 조인 조건이 일치하지 않는 데이터는 결과에서 제외된다.
  • 용도: 양쪽 테이블 모두에 정보가 확실히 존재하는 경우에 사용한다.

 

예시 구문:

SELECT A.name, B.order_date
FROM Users A
INNER JOIN Orders B ON A.user_id = B.user_id;

설명: 'Users' 테이블과 'Orders' 테이블을 user_id 기준으로 합친다. 주문 내역이 없는 사용자는 결과에 나타나지 않는다.

 

OUTER JOIN (외부 조인)

OUTER JOIN은 공통된 값뿐만 아니라, 한쪽에만 존재하는 데이터도 포함하여 결과를 반환한다.

데이터가 없는 부분은 NULL로 표시된다.

 

LEFT OUTER JOIN (왼쪽 외부 조인)

왼쪽(먼저 작성된) 테이블의 모든 데이터를 가져오고, 오른쪽 테이블에서 일치하는 데이터를 붙인다.

  • 특징: 오른쪽 테이블에 데이터가 없더라도 왼쪽 테이블의 행은 모두 보존된다.
  • 용도: "전체 사용자 목록과 그들의 주문 내역(주문이 없어도 이름은 나와야 함)"을 뽑을 때 유용하다.

예시 구문:

SELECT E.이름, D.부서명
FROM Employees E
LEFT JOIN Departments D ON E.부서ID = D.부서ID;

 

 

RIGHT OUTER JOIN (오른쪽 외부 조인)

오른쪽(나중에 작성된) 테이블의 모든 데이터를 보존하고, 왼쪽 테이블의 데이터를 붙인다.

  • 특징: LEFT JOIN과 방향만 반대이며, 보통 가독성을 위해 LEFT JOIN을 더 자주 사용한다.

예시 구문:

SELECT E.이름, D.부서명
FROM Employees E
RIGHT JOIN Departments D ON E.부서ID = D.부서ID;

 

FULL OUTER JOIN (전체 외부 조인)

양쪽 테이블의 모든 데이터를 합친다.

  • 특징: 어느 한쪽에만 데이터가 있더라도 결과에 포함된다. (MySQL 등 일부 DB에서는 지원하지 않아 UNION을 사용해야 할 때도 있다.)

예시 구문:

SELECT E.이름, D.부서명
FROM Employees E
FULL OUTER JOIN Departments D ON E.부서ID = D.부서ID;

 

MySQL에서 FULL OUTER JOIN 구현하기

-- 1. LEFT JOIN (부서 없는 직원 포함)
SELECT E.이름, D.부서명
FROM Employees E
LEFT JOIN Departments D ON E.부서ID = D.부서ID

UNION -- 두 결과를 합치고 중복된 행은 제거함

-- 2. RIGHT JOIN (직원 없는 부서 포함)
SELECT E.이름, D.부서명
FROM Employees E
RIGHT JOIN Departments D ON E.부서ID = D.부서ID;