🖥️ IT, 컴퓨터/🏁 SQL・빅쿼리

[SQL] INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN 차이점

김 홍시 2024. 11. 24.
반응형

SQL의 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN은 테이블 간 데이터를 조합할 때 사용되는 조인 유형들입니다. 각각의 차이점과 동작 방식을 간단히 정리하면 아래와 같습니다.


1. INNER JOIN

  • 설명: 두 테이블의 공통된 값이 있는 행만 반환합니다.
  • 결과: 교집합.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    INNER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블을 조인해, 공통된 학생 ID가 있는 데이터만 가져옴.

2. LEFT JOIN (또는 LEFT OUTER JOIN)

  • 설명: 왼쪽 테이블(첫 번째 테이블)의 모든 행을 반환하며, 오른쪽 테이블(두 번째 테이블)의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 왼쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    LEFT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블에 있는 모든 학생 데이터를 가져오되, 성적이 없는 학생의 데이터도 포함하고, 성적 값은 NULL로 표시.

3. RIGHT JOIN (또는 RIGHT OUTER JOIN)

  • 설명: 오른쪽 테이블(두 번째 테이블)의 모든 행을 반환하며, 왼쪽 테이블의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 오른쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    RIGHT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 성적 테이블에 있는 모든 성적 데이터를 가져오되, 성적과 매칭되지 않는 학생은 NULL로 표시.

4. FULL OUTER JOIN

  • 설명: 왼쪽 및 오른쪽 테이블의 모든 행을 반환하며, 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 합집합 (교집합 + 차집합).
  • 사용 구조:
    SELECT *
    FROM 테이블A
    FULL OUTER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블의 모든 데이터를 가져오되, 공통된 데이터는 병합, 매칭되지 않은 데이터는 NULL로 표시.

 


요약 표

JOIN 종류 포함되는 데이터

INNER JOIN 두 테이블의 공통된 값 (교집합).
LEFT JOIN 왼쪽 테이블의 모든 값 + 매칭되지 않는 오른쪽 값은 NULL.
RIGHT JOIN 오른쪽 테이블의 모든 값 + 매칭되지 않는 왼쪽 값은 NULL.
FULL OUTER JOIN 두 테이블의 모든 값 + 매칭되지 않는 값은 NULL.

예제 테이블

학생 테이블

학생ID 이름

1 홍길동
2 이순신
3 강감찬

성적 테이블

학생ID 성적

2 85
3 90
4 95

INNER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
INNER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90

LEFT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
LEFT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90

RIGHT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
RIGHT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90
4 NULL 95

FULL OUTER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
FULL OUTER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90
4 NULL 95

이처럼 조인의 종류에 따라 결과가 달라지며, 분석 목적에 맞는 조인 방식을 선택하면 됩니다! 😊

SQL의 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN은 테이블 간 데이터를 조합할 때 사용되는 조인 유형들입니다. 각각의 차이점과 동작 방식을 간단히 정리하면 아래와 같습니다.


1. INNER JOIN

  • 설명: 두 테이블의 공통된 값이 있는 행만 반환합니다.
  • 결과: 교집합.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    INNER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블을 조인해, 공통된 학생 ID가 있는 데이터만 가져옴.

2. LEFT JOIN (또는 LEFT OUTER JOIN)

  • 설명: 왼쪽 테이블(첫 번째 테이블)의 모든 행을 반환하며, 오른쪽 테이블(두 번째 테이블)의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 왼쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    LEFT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블에 있는 모든 학생 데이터를 가져오되, 성적이 없는 학생의 데이터도 포함하고, 성적 값은 NULL로 표시.

3. RIGHT JOIN (또는 RIGHT OUTER JOIN)

  • 설명: 오른쪽 테이블(두 번째 테이블)의 모든 행을 반환하며, 왼쪽 테이블의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 오른쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    RIGHT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 성적 테이블에 있는 모든 성적 데이터를 가져오되, 성적과 매칭되지 않는 학생은 NULL로 표시.

4. FULL OUTER JOIN

  • 설명: 왼쪽 및 오른쪽 테이블의 모든 행을 반환하며, 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 합집합 (교집합 + 차집합).
  • 사용 구조:
    SELECT *
    FROM 테이블A
    FULL OUTER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블의 모든 데이터를 가져오되, 공통된 데이터는 병합, 매칭되지 않은 데이터는 NULL로 표시.

시각화로 이해하기

1. INNER JOIN

2. LEFT JOIN

3. RIGHT JOIN

4. FULL OUTER JOIN


요약 표

JOIN 종류 포함되는 데이터

INNER JOIN 두 테이블의 공통된 값 (교집합).
LEFT JOIN 왼쪽 테이블의 모든 값 + 매칭되지 않는 오른쪽 값은 NULL.
RIGHT JOIN 오른쪽 테이블의 모든 값 + 매칭되지 않는 왼쪽 값은 NULL.
FULL OUTER JOIN 두 테이블의 모든 값 + 매칭되지 않는 값은 NULL.

예제 테이블

학생 테이블

학생ID 이름

1 홍길동
2 이순신
3 강감찬

성적 테이블

학생ID 성적

2 85
3 90
4 95

INNER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
INNER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90

LEFT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
LEFT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90

RIGHT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
RIGHT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90
4 NULL 95

FULL OUTER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
FULL OUTER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90
4 NULL 95

이처럼 조인의 종류에 따라 결과가 달라지며, 분석 목적에 맞는 조인 방식을 선택하면 됩니다! 😊

SQL의 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN은 테이블 간 데이터를 조합할 때 사용되는 조인 유형들입니다. 각각의 차이점과 동작 방식을 간단히 정리하면 아래와 같습니다.


1. INNER JOIN

  • 설명: 두 테이블의 공통된 값이 있는 행만 반환합니다.
  • 결과: 교집합.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    INNER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블을 조인해, 공통된 학생 ID가 있는 데이터만 가져옴.

2. LEFT JOIN (또는 LEFT OUTER JOIN)

  • 설명: 왼쪽 테이블(첫 번째 테이블)의 모든 행을 반환하며, 오른쪽 테이블(두 번째 테이블)의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 왼쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    LEFT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블에 있는 모든 학생 데이터를 가져오되, 성적이 없는 학생의 데이터도 포함하고, 성적 값은 NULL로 표시.

3. RIGHT JOIN (또는 RIGHT OUTER JOIN)

  • 설명: 오른쪽 테이블(두 번째 테이블)의 모든 행을 반환하며, 왼쪽 테이블의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 오른쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    RIGHT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 성적 테이블에 있는 모든 성적 데이터를 가져오되, 성적과 매칭되지 않는 학생은 NULL로 표시.

4. FULL OUTER JOIN

  • 설명: 왼쪽 및 오른쪽 테이블의 모든 행을 반환하며, 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 합집합 (교집합 + 차집합).
  • 사용 구조:
    SELECT *
    FROM 테이블A
    FULL OUTER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블의 모든 데이터를 가져오되, 공통된 데이터는 병합, 매칭되지 않은 데이터는 NULL로 표시.

시각화로 이해하기

1. INNER JOIN

2. LEFT JOIN

3. RIGHT JOIN

4. FULL OUTER JOIN


요약 표

JOIN 종류 포함되는 데이터

INNER JOIN 두 테이블의 공통된 값 (교집합).
LEFT JOIN 왼쪽 테이블의 모든 값 + 매칭되지 않는 오른쪽 값은 NULL.
RIGHT JOIN 오른쪽 테이블의 모든 값 + 매칭되지 않는 왼쪽 값은 NULL.
FULL OUTER JOIN 두 테이블의 모든 값 + 매칭되지 않는 값은 NULL.

예제 테이블

학생 테이블

학생ID 이름

1 홍길동
2 이순신
3 강감찬

성적 테이블

학생ID 성적

2 85
3 90
4 95

INNER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
INNER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90

LEFT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
LEFT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90

RIGHT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
RIGHT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90
4 NULL 95

FULL OUTER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
FULL OUTER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90
4 NULL 95

이처럼 조인의 종류에 따라 결과가 달라지며, 분석 목적에 맞는 조인 방식을 선택하면 됩니다! 😊

SQL의 INNER JOIN, LEFT JOIN, RIGHT JOIN, FULL OUTER JOIN은 테이블 간 데이터를 조합할 때 사용되는 조인 유형들입니다. 각각의 차이점과 동작 방식을 간단히 정리하면 아래와 같습니다.


1. INNER JOIN

  • 설명: 두 테이블의 공통된 값이 있는 행만 반환합니다.
  • 결과: 교집합.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    INNER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블을 조인해, 공통된 학생 ID가 있는 데이터만 가져옴.

2. LEFT JOIN (또는 LEFT OUTER JOIN)

  • 설명: 왼쪽 테이블(첫 번째 테이블)의 모든 행을 반환하며, 오른쪽 테이블(두 번째 테이블)의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 왼쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    LEFT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블에 있는 모든 학생 데이터를 가져오되, 성적이 없는 학생의 데이터도 포함하고, 성적 값은 NULL로 표시.

3. RIGHT JOIN (또는 RIGHT OUTER JOIN)

  • 설명: 오른쪽 테이블(두 번째 테이블)의 모든 행을 반환하며, 왼쪽 테이블의 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 오른쪽 테이블 중심.
  • 사용 구조:
    SELECT *
    FROM 테이블A
    RIGHT JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 성적 테이블에 있는 모든 성적 데이터를 가져오되, 성적과 매칭되지 않는 학생은 NULL로 표시.

4. FULL OUTER JOIN

  • 설명: 왼쪽 및 오른쪽 테이블의 모든 행을 반환하며, 매칭되지 않는 값은 NULL로 표시됩니다.
  • 결과: 합집합 (교집합 + 차집합).
  • 사용 구조:
    SELECT *
    FROM 테이블A
    FULL OUTER JOIN 테이블B
    ON 테이블A.공통열 = 테이블B.공통열;
    
  • 예시:
    • 학생 테이블과 성적 테이블의 모든 데이터를 가져오되, 공통된 데이터는 병합, 매칭되지 않은 데이터는 NULL로 표시.

시각화로 이해하기

1. INNER JOIN

2. LEFT JOIN

3. RIGHT JOIN

4. FULL OUTER JOIN


요약 표

JOIN 종류 포함되는 데이터

INNER JOIN 두 테이블의 공통된 값 (교집합).
LEFT JOIN 왼쪽 테이블의 모든 값 + 매칭되지 않는 오른쪽 값은 NULL.
RIGHT JOIN 오른쪽 테이블의 모든 값 + 매칭되지 않는 왼쪽 값은 NULL.
FULL OUTER JOIN 두 테이블의 모든 값 + 매칭되지 않는 값은 NULL.

예제 테이블

학생 테이블

학생ID 이름

1 홍길동
2 이순신
3 강감찬

성적 테이블

학생ID 성적

2 85
3 90
4 95

INNER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
INNER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90

LEFT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
LEFT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90

RIGHT JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
RIGHT JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

2 이순신 85
3 강감찬 90
4 NULL 95

FULL OUTER JOIN 실행 결과

SELECT 학생.학생ID, 학생.이름, 성적.성적
FROM 학생
FULL OUTER JOIN 성적
ON 학생.학생ID = 성적.학생ID;

학생ID 이름 성적

1 홍길동 NULL
2 이순신 85
3 강감찬 90
4 NULL 95

이처럼 조인의 종류에 따라 결과가 달라지며, 분석 목적에 맞는 조인 방식을 선택하면 됩니다! 😊

반응형

'🖥️ IT, 컴퓨터 > 🏁 SQL・빅쿼리' 카테고리의 다른 글

[SQL] LAG란?  (0) 2024.11.24
[SQL] 윈도우 함수(Window Function)란?  (0) 2024.11.24
[SQL] LIKE란?  (0) 2024.11.24
[SQL] HAVING 절이란?  (0) 2024.11.24
[SQL] `CASE WHEN` 구문이란?  (0) 2024.11.24

댓글