본문 바로가기
자격증 준비/SQLD

JOIN 종류와 차이 초보자용 정리: INNER JOIN, LEFT JOIN 쉽게 이해하기

by 코딩사무소장 2026. 3. 11.
반응형

JOIN 종류와 차이 초보자용 정리: INNER JOIN, LEFT JOIN 쉽게 이해하기

SQL을 공부하다 보면 JOIN 종류와 차이에서 한 번쯤 막히게 됩니다. 특히 INNER JOINLEFT JOIN은 자주 나오지만, 어떤 경우에 결과가 달라지는지 처음에는 감이 잘 안 잡힙니다. 결론부터 말하면 INNER JOIN은 양쪽 테이블에 모두 값이 있는 데이터만 가져오고, LEFT JOIN은 왼쪽 테이블 기준으로 일치하지 않는 데이터까지 포함해서 가져옵니다. 이 글에서는 SQL 초보자와 SQLD 준비생이 헷갈리지 않도록 JOIN의 기본 개념, 종류, 예제, 자주 하는 실수까지 한 번에 정리해보겠습니다.

이 글은 이런 분께 추천합니다
  • JOIN이 왜 필요한지부터 헷갈리는 분
  • INNER JOIN과 LEFT JOIN 차이를 쉽게 정리하고 싶은 분
  • SQLD를 준비하면서 조인 문제에서 자주 틀리는 분
  • PK, FK는 알겠는데 실제 테이블 연결이 잘 안 보이는 분

JOIN이란 무엇인가

JOIN은 두 개 이상의 테이블을 연결해서 필요한 데이터를 함께 조회하는 방식입니다.

관계형 데이터베이스에서는 보통 데이터를 한 테이블에 전부 몰아넣지 않습니다. 예를 들어 회원 정보는 회원 테이블에, 주문 정보는 주문 테이블에 나누어 저장하는 경우가 많습니다. 이때 “어떤 회원이 어떤 주문을 했는지” 같이 함께 보고 싶다면 JOIN이 필요합니다.

쉽게 말하면 JOIN은 따로 저장된 정보를 연결해서 한 번에 보는 방법이라고 생각하면 됩니다.

JOIN이 필요한 이유

예를 들어 아래처럼 두 개의 테이블이 있다고 가정해보겠습니다.

members 테이블
member_id
name
orders 테이블
order_id
member_id
order_date

회원 이름은 members 테이블에 있고, 주문일자는 orders 테이블에 있습니다. 그런데 “홍길동의 주문일자”를 보고 싶다면 한 테이블만 봐서는 부족합니다. 이런 상황에서 member_id를 기준으로 두 테이블을 연결하는 것이 JOIN입니다.

가장 먼저 이해해야 할 JOIN 종류

초보자 기준으로는 아래 두 가지를 먼저 정확히 이해하는 것이 가장 중요합니다.

  • INNER JOIN: 양쪽에 공통으로 있는 데이터만 조회
  • LEFT JOIN: 왼쪽 테이블 기준으로 전부 조회, 오른쪽이 없으면 NULL

SQLD나 실무 입문 단계에서는 이 두 개를 확실히 이해하면 대부분의 기본 문제를 풀 수 있습니다.

INNER JOIN이란

INNER JOIN은 두 테이블에 공통으로 존재하는 데이터만 가져오는 조인입니다.

예를 들어 회원 중 주문한 사람만 보고 싶다면 INNER JOIN을 사용할 수 있습니다.

SELECT m.name, o.order_date
FROM members m
INNER JOIN orders o
  ON m.member_id = o.member_id;

이 쿼리는 회원 테이블과 주문 테이블을 연결해서, 실제로 주문 기록이 있는 회원만 보여줍니다.

INNER JOIN 핵심 포인트

  • 양쪽 테이블에 모두 값이 있어야 결과에 나온다
  • 매칭되지 않는 데이터는 제외된다
  • “공통 데이터만 본다”는 관점으로 이해하면 쉽다

LEFT JOIN이란

LEFT JOIN은 왼쪽 테이블의 데이터는 모두 유지하고, 오른쪽 테이블에서 일치하는 값이 있으면 붙이는 조인입니다.

만약 “회원 전체를 보되, 주문이 있으면 주문 정보도 같이 보고 싶다”면 LEFT JOIN이 더 مناسب합니다.

SELECT m.name, o.order_date
FROM members m
LEFT JOIN orders o
  ON m.member_id = o.member_id;

이 쿼리는 주문을 하지 않은 회원도 결과에 포함됩니다. 대신 주문 정보가 없으면 오른쪽 컬럼 값은 NULL로 표시됩니다.

LEFT JOIN 핵심 포인트

  • 왼쪽 테이블 기준으로 결과가 유지된다
  • 오른쪽에 값이 없으면 NULL이 들어간다
  • “왼쪽은 다 보고 싶다”는 상황에서 자주 쓴다

INNER JOIN과 LEFT JOIN 차이를 표로 보면 더 쉽다

구분 INNER JOIN LEFT JOIN
기준 양쪽 공통 데이터 왼쪽 테이블 전체
매칭 안 되는 데이터 제외 왼쪽은 유지, 오른쪽은 NULL
주요 목적 일치하는 데이터만 보기 기준 테이블 전체 보기
초보자 해석 겹치는 것만 왼쪽은 다

예제로 결과 차이를 보면 더 명확하다

아래처럼 데이터가 있다고 가정해보겠습니다.

members

1 김철수
2 이영희
3 박민수

orders

101 1 2026-03-01
102 2 2026-03-02

여기서 member_id가 3인 박민수는 주문 기록이 없습니다.

INNER JOIN 결과

INNER JOIN을 쓰면 주문이 있는 회원만 결과에 나옵니다.

김철수 2026-03-01
이영희 2026-03-02

LEFT JOIN 결과

LEFT JOIN을 쓰면 회원 전체가 나옵니다. 주문이 없는 박민수도 포함되고, 주문일자는 NULL이 됩니다.

김철수 2026-03-01
이영희 2026-03-02
박민수 NULL

이 차이 때문에 문제를 풀 때는 항상 “어느 테이블을 기준으로 모두 보고 싶은가?”를 먼저 생각하는 습관이 중요합니다.

ON은 왜 필요한가

JOIN에서는 보통 ON 절을 함께 씁니다. ON은 어떤 컬럼을 기준으로 두 테이블을 연결할지 정하는 조건입니다.

ON m.member_id = o.member_id

이 조건이 있어야 어떤 회원 정보와 어떤 주문 정보를 연결해야 하는지 알 수 있습니다.

초보자가 JOIN에서 자주 하는 실수

자주 하는 실수 1

INNER JOIN과 LEFT JOIN 결과가 같을 거라고 생각하는 것

데이터가 모두 매칭되는 상황에서는 결과가 비슷해 보일 수 있지만, 일치하지 않는 데이터가 생기면 결과는 분명히 달라집니다.

자주 하는 실수 2

왼쪽 테이블이 무엇인지 생각하지 않고 LEFT JOIN을 쓰는 것

LEFT JOIN은 이름 그대로 왼쪽 테이블 기준입니다. 쿼리에서 FROM 뒤에 오는 테이블이 무엇인지 항상 먼저 확인해야 합니다.

자주 하는 실수 3

ON 조건 없이 조인을 생각하는 것

어떤 값으로 연결할지 기준이 없으면 원하는 결과가 나오지 않거나, 초보자 기준에서는 엉뚱하게 데이터가 불어나 보일 수 있습니다.

비전공자는 이렇게 외우면 쉽다

  • INNER JOIN = 겹치는 데이터만
  • LEFT JOIN = 왼쪽은 전부
  • ON = 무엇으로 연결할지 기준
  • 먼저 “기준 테이블이 무엇인가”를 생각하면 문제풀이가 쉬워집니다.

SQLD 기준으로 JOIN을 왜 꼭 알아야 하나

SQLD에서는 조인, 관계, PK/FK, 데이터 모델링 개념이 연결되어 나옵니다. JOIN을 이해하면 아래 개념도 함께 정리됩니다.

  • 테이블 간 관계
  • PK와 FK의 실제 활용
  • INNER JOIN과 OUTER JOIN 차이
  • 문제에서 결과 행 수를 예측하는 감각

특히 INNER JOIN과 LEFT JOIN 차이를 확실히 구분하면 SQLD 문제풀이에서 실수를 줄이기 좋습니다.

핵심 요약

  • JOIN은 여러 테이블을 연결해서 함께 조회하는 방법입니다.
  • INNER JOIN은 양쪽에 모두 있는 데이터만 가져옵니다.
  • LEFT JOIN은 왼쪽 테이블 기준으로 모두 가져오고, 오른쪽 값이 없으면 NULL이 됩니다.
  • JOIN에서는 어떤 테이블이 기준인지, 어떤 컬럼으로 연결하는지 먼저 생각해야 합니다.
  • 초보자는 “겹치는 것만 = INNER, 왼쪽은 다 = LEFT”로 기억하면 쉽습니다.

FAQ

JOIN은 왜 필요한가요?

관계형 데이터베이스에서는 정보가 여러 테이블에 나뉘어 저장되는 경우가 많기 때문에, 필요한 정보를 한 번에 보기 위해 JOIN이 필요합니다.

INNER JOIN과 LEFT JOIN 차이는 가장 간단히 어떻게 외우면 되나요?

INNER JOIN은 겹치는 것만, LEFT JOIN은 왼쪽은 전부라고 외우면 가장 쉽습니다.

LEFT JOIN에서 왜 NULL이 나오나요?

왼쪽 테이블 데이터는 유지되지만, 오른쪽에 연결되는 값이 없으면 채울 데이터가 없기 때문에 NULL이 표시됩니다.

JOIN할 때 ON은 꼭 필요한가요?

입문 단계에서는 어떤 값으로 연결할지 정하는 기준이 필요하다고 이해하면 됩니다. 그래서 보통 ON 조건을 함께 씁니다.

SQLD에서는 JOIN이 자주 나오나요?

자주 나옵니다. 특히 PK/FK, 관계, OUTER JOIN 개념과 함께 출제되는 경우가 많아 기본 개념을 확실히 잡아두는 것이 좋습니다.

반응형