Welcome! Everything is fine.

[DB] 내부 조인, 외부조인, 셀프조인, 크로스조인 본문

TIL

[DB] 내부 조인, 외부조인, 셀프조인, 크로스조인

개발곰발 2025. 11. 27.
728x90
인프런 <김영한의 실전 데이터베이스 - 기본편> 강의를 토대로 정리한 내용입니다.

 


 

만약 모든 정보를 한 테이블에 다 넣는다면 조회할 때는 좀 더 편리할 수도 있겠지만, 다음과 같은 문제가 발생할 수 있다.

  1. 데이터 중복
  2. 갱신 이상
  3. 삽입 이상
  4. 삭제 이상

이러한 문제들 때문에 데이터베이스를 설계할 때는 정규화(Normalization)라는 과정을 거친다.

 

  • 정규화(Normalization) : 데이터의 중복을 최소화하고, 데이터의 일관성을 해치는 '이상 현상'들을 방지하기 위해 데이터를 논리적인 단위로 분리하는 과정.

 

그런데 이렇게 정규화를 거쳐서 쪼개진 테이블들에서 의미 있는 정보를 얻으려면 이 흩어진 데이터 조각들을 다시 합쳐야 한다. 이때 사용하는 기술이 바로 조인(JOIN) 이다. 조인의 종류에는 내부 조인, 외부 조인, 셀프 조인, 크로스 조인이 있다.

 

  • 조인(JOIN) : 두 개 이상의 테이블을 특정 컬럼을 기준으로 연결하여, 마치 처음부터 하나의 테이블이었던 것처럼 보여주는 기능.

내부 조인

양쪽 테이블에 모두 공통으로 존재하는 데이터만을 보고싶을 때 사용하는 기술.
SELECT 컬럼1, 컬럼2, ...
FROM 테이블A
INNER JOIN 테이블B -- INNER 생략 가능
ON 테이블A.연결컬럼 = 테이블B.연결컬럼;
  • 논리적 처리 순서 : FROM/JOIN (테이블 결합) → WHERE (조건 필터링) → SELECT (컬럼 선택)

외부 조인

한 쪽에는 데이터가 있지만, 다른 한 쪽에는 없는 데이터까지 모두 포함해서 보고싶을 때 사용하는 기술.

  • LEFT (OUTER) JOIN은 왼쪽 테이블을, RIGHT (OUTER) JOIN은 오른쪽 테이블을 기준으로 삼는다.
    • 기준으로 되는 테이블의 모든 데이터를 결과에 포함시킨다.
    • 그 다음, ON 조건에 맞는 데이터를 반대 테이블에서 찾아 옆에 붙여준다.
    • 만약 반대 테이블에 짝이 맞는 데이터가 없다면, 그 자리는 NULL 값으로 채워진다.

셀프 조인

자기 참조 관계의 데이터를 한 번의 쿼리로 조회하기 위해 사용하는 기술.
  • 자기 참조 관계란 한 테이블 안에서 자신의 컬럼이 같은 테이블의 다른 컬럼을 참조하는 구조를 말한다.
  • INNER JOIN → NULL이면 안나온다.
  • LEFT JOIN → NULL인 것까지 다 나온다.

크로스 조인

애초에 짝이나 관계가 없는 두 집단을 가지고 가능한 모든 조합을 만들어내야 할 때 사용하는 기술.
  • 조인 조건 없이 한쪽 테이블의 모든 행을 다른 쪽 테이블의 모든 행과 하나씩 전부 연결하는 가장 단순한 조인 방식이다. 그러나, 크로스 조인은 결과의 행 수가 기하급수적으로 늘어날 수 있기 때문에 가급적 사용하지 않는 것이 좋다.
  • 크로스 조인의 결과는 수학 용어로 카테시안 곱 또는 데카르트 곱이라고 한다.