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로 채움 |
결합 대상 | 교집합 | 왼쪽 테이블의 모든 데이터 포함 |
사용 목적 | 일치하는 데이터만 필요한 경우 | 왼쪽 테이블의 전체 데이터 보존 필요 시 |
활용 사례
- 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
반응형
'IT > DB' 카테고리의 다른 글
AND EXISTS (SELECT 1 FROM 테이블) 쿼리 조건 뜻? (0) | 2024.12.04 |
---|---|
group by a, group by a,b 차이 (0) | 2024.12.03 |
DBMS 뜻? 종류? (1) | 2024.11.27 |
데이터베이스 SQL COALESCE 함수 사용하는 방법 (0) | 2024.11.25 |
데이터베이스 SQL에서 다음행 찾는 LEAD( ) OVER ( ) 함수 (0) | 2024.11.23 |