SQL

SQL JOIN

윤승 2025. 3. 31. 21:14

SQL JOIN 개념

 

  • 두 개 이상의 테이블을 연결하여 데이터를 조회하는 방법
  • 관계형 데이터베이스에서 핵심적인 기능

 

JOIN의 종류

 

1️⃣ INNER JOIN

  • 두 테이블에서 공통된 값이 있는 행만 반환
SELECT * FROM 테이블A  
INNER JOIN 테이블B  
ON 테이블A.컬럼 = 테이블B.컬럼;

 

 

 

2️⃣ OUTER JOIN (LEFT / RIGHT)

  • 한쪽 테이블의 모든 데이터를 유지하며 다른 테이블과 매칭되는 데이터를 가져옴

 LEFT OUTER JOIN (LEFT JOIN)

  • 왼쪽 테이블의 모든 행을 반환, 오른쪽 테이블에서 매칭되는 데이터가 없으면 NULL
SELECT * FROM 테이블A  
LEFT JOIN 테이블B  
ON 테이블A.컬럼 = 테이블B.컬럼;

 

RIGHT OUTER JOIN (RIGHT JOIN)

  • 오른쪽 테이블의 모든 행을 반환, 왼쪽 테이블에서 매칭되는 데이터가 없으면 NULL
SELECT * FROM 테이블A  
RIGHT JOIN 테이블B  
ON 테이블A.컬럼 = 테이블B.컬럼;

 

 

3️⃣ FULL OUTER JOIN (UNION 사용)

 

  • 양쪽 테이블의 모든 행을 반환, 매칭되지 않는 경우 NULL
  • MySQL에서는 직접 지원하지 않으므로 UNION을 사용하여 구현
SELECT * FROM 테이블A  
LEFT JOIN 테이블B  
ON 테이블A.컬럼 = 테이블B.컬럼  
UNION  
SELECT * FROM 테이블A  
RIGHT JOIN 테이블B  
ON 테이블A.컬럼 = 테이블B.컬럼;

 

 

✅ UNION은 중복 제거(DISTINCT 포함), 중복 포함 시 UNION ALL 사용
✅ UNION 사용 시 SELECT 필드 개수, 순서, 타입이 일치해야 함

 

🔥 정리

 

JOIN 종류

  • INNER JOIN: 공통된 값이 있는 행만 반환
  • LEFT JOIN: 왼쪽 테이블의 모든 행 + 오른쪽 테이블에서 매칭되는 행
  • RIGHT JOIN: 오른쪽 테이블의 모든 행 + 왼쪽 테이블에서 매칭되는 행
  • FULL OUTER JOIN (UNION): 양쪽 테이블의 모든 행 반환, 매칭되지 않는 데이터는 NULL

'SQL' 카테고리의 다른 글

1:N, M:N 관계에서의 외래키 설계와 테이블 명명법  (0) 2025.04.09
SQL - 기초 문법 3  (0) 2025.02.24
SQL - 기초 문법2  (0) 2025.02.21
SQL 기초 문법  (0) 2025.02.20