본문 바로가기

IT/DB

데이터베이스 SQL JOIN, LEFT JOIN 차이는?

728x90
반응형

 

 

 

JOIN(또는 INNER JOIN)과 LEFT JOIN(또는 LEFT OUTER JOIN)은 SQL에서 테이블을 결합할 때 사용하는 연산자로,

 

두 테이블 간의 관계를 기반으로 데이터를 결합합니다. 그러나 반환되는 결과가 다릅니다.


 

JOIN (또는 INNER JOIN)

  • 교집합: 두 테이블에서 조인 조건을 만족하는 공통 데이터만 반환.
  • 일치하는 데이터만 필요할 때 사용.
  • 조건이 일치하지 않는 데이터는 결과에 포함되지 않습니다.

예제

테이블 A

ID Name
1 Alice
2 Bob
3 Charlie

 

테이블 B

ID Order
1 A123
2 B456
4 D789
 
 
SELECT A.ID, A.Name, B.Order 
FROM A JOIN B ON A.ID = B.ID;
 

 

결과 (JOIN):

ID Name Order
1 Alice A123
2 Bob B456

 

LEFT JOIN (또는 LEFT OUTER JOIN)

  • 왼쪽 테이블의 모든 데이터를 반환하며, 오른쪽 테이블에 **일치하는 데이터가 없는 경우 NULL**로 채움.
  • 왼쪽 테이블의 전체 데이터를 보존하면서 오른쪽 데이터를 결합할 때 유용.

 

예제

 
SELECT A.ID, A.Name, B.Order 
FROM A LEFT JOIN B ON A.ID = B.ID;

 

 

결과 (LEFT JOIN):

ID Name Order
1 Alice A123
2 Bob B456
3 Charlie NULL

 

주요 차이점

 

특성JOIN (INNER JOIN)LEFT JOIN (LEFT OUTER JOIN)

결과 포함 조건 두 테이블 모두에서 조건에 일치하는 행만 포함 왼쪽 테이블의 모든 행 포함, 오른쪽 테이블은 조건 일치 시 포함
조건 불일치 시 결과 조건에 일치하지 않는 행은 제외 오른쪽 테이블에서 조건에 일치하지 않는 경우 NULL로 채움
결합 대상 교집합 왼쪽 테이블의 모든 데이터 포함
사용 목적 일치하는 데이터만 필요한 경우 왼쪽 테이블의 전체 데이터 보존 필요 시

 

활용 사례

  1. JOIN 활용:
    • 주문 내역에서 유효한 고객 정보만 가져올 때.

LEFT JOIN 활용:

  • 고객 목록을 기준으로, 주문 내역이 없는 고객까지 포함한 보고서를 생성할 때.
SELECT Customers.ID, Customers.Name, Orders.OrderID 
FROM Customers JOIN Orders ON Customers.ID = Orders.CustomerID;

비교를 시각적으로 이해하기

두 테이블의 데이터 관계를 보여주는 다이어그램:

 

JOIN (교집합) LEFT JOIN (왼쪽 포함)
🟢 A와 B의 공통 부분 🟢 A 전체 + B의 공통 부분

결론

  • JOIN: 두 테이블 간 조건에 맞는 데이터만 가져오고, 나머지는 제외.
  • LEFT JOIN: 왼쪽 테이블의 데이터를 기준으로 하되, 오른쪽 테이블에 없는 데이터는 NULL로 채움.

 

테이블 결합 목적과 요구사항에 따라 JOIN 또는 LEFT JOIN을 선택하면 됩니다!

 

 

 

728x90
반응형