SQL

JOIN이란? 그리고 'INNER JOIN'과 'LEFT JOIN'의 차이점

euicheol0910 2025. 5. 7. 12:29

SQL에서 JOIN, INNER JOIN, LEFT JOIN은 여러 테이블의 데이터를 조합해서 하나의 결과로 만들기 위한 문법입니다. 각각의 차이점은 조인 조건에 맞는 행이 없을 때 해당 행을 포함하느냐에 달려 있습니다.

 

users 테이블 (회원 정보)

id  name
1 Alice
2 Bob
3 Carol

 

 

orders 테이블 (주문 정보)

id user_id  product
1 1 Keyboard
2 1 Monitor
3 2 Mouse
4 4 Headphones

 

 

다음과 같은 두 개의 테이블이 있다고 할 때 

 

1. INNER JOIN (또는 그냥 JOIN)

 

  • 조인 조건을 만족하는 행만 반환
  • user_id가 users.id와 일치하는 경우만 결과에 포함
SELECT users.name, orders.product
FROM users
INNER JOIN orders ON users.id = orders.user_id;

 

 

 

Carol은 주문이 없어서 제외되고

user_id = 4는 users에 없는 id이므로 제외됩니다.

name product
Alice Keyboard
Alice Monitor
Bob Mouse

 

 

2. LEFT JOIN (또는 LEFT OUTER JOIN)

  • 왼쪽 테이블의 모든 행을 포함하고,
  • 조인 조건에 맞지 않으면 오른쪽 테이블 컬럼은 NULL
SELECT users.name, orders.product
FROM users
LEFT JOIN orders ON users.id = orders.user_id;

 

 

name product
Alice Keyboard
Alice Monitor
Bob Mouse
Carol NULL

 

Carol은 주문이 없어도 포함됨 (product는 NULL).
orders 테이블에만 있고 users에 없는 user_id = 4는 포함되지 않습니다.

 

정리하자면,

  • 사용자가 반드시 주문을 한 것은 아닐 수 있습니다.
  • INNER JOIN은 관계가 있는 데이터만,
  • LEFT JOIN은 모든 사용자 + 주문 여부 관계까지 보고 싶을 때 사용합니다.

'SQL' 카테고리의 다른 글

RDBMS  (1) 2025.05.09
데이터베이스에서 다양한 유형의 관계  (0) 2025.05.08
정규화에 대하여  (4) 2025.05.01
기본 키(primary key)와 외래 키(foreign key)  (0) 2025.05.01
SQL 함수  (2) 2025.01.16