학습 자료

CROSS JOIN & SELF JOIN

SQL에는 특정 상황에서 강력한 고급 Join 유형들이 있습니다.

  • CROSS JOIN은 두 테이블 사이의 가능한 모든 행 쌍을 반환합니다
  • SELF JOIN은 같은 테이블을 자기 자신과 Join하여 테이블 내부의 행을 비교하거나 연관시킵니다

CROSS JOIN

CROSS JOIN은 두 테이블의 모든 행 조합, 즉 데카르트 곱을 반환합니다. 첫 번째 테이블의 각 행이 두 번째 테이블의 모든 행과 결합됩니다.

CROSS JOIN
SELECT students.name, days.day FROM students CROSS JOIN days;

주의: 결과 행 수는 rows_in_students × rows_in_days와 같으며, 매우 빠르게 커질 수 있습니다!

이런 경우에 사용합니다.

  • 모든 가능한 조합 생성(예: 시간표, 조합)
  • 쌍별(pairwise) 비교 수행
  • 격자(grid)나 테스트 케이스 생성

SELF JOIN

SELF JOIN은 테이블을 자기 자신과 Join하는 것으로, 같은 테이블 내의 행들을 비교하거나 서로 연관시키는 데 유용합니다.

예시: 직원과 관리자

아래는 employees 테이블을 자기 자신과 SELF JOIN한 예시입니다.

employees

idnamemanager_id
1김지영NULL
2이민수1
3박수진1
4최현우2

각 직원의 관리자를 찾으려면 SELF JOIN을 사용합니다.

관리자를 찾는 SELF JOIN
SELECT employees.name AS employee, managers.name AS manager FROM employees LEFT JOIN employees AS managers ON employees.manager_id = managers.id;

쿼리 결과:

employeemanager
김지영NULL
이민수김지영
박수진김지영
최현우이민수

같은 테이블을 서로 다른 역할로 구분하기 위해 employeesmanagers라는 별칭을 사용했습니다.


CROSS JOIN & SELF JOIN은 어떠한 경우에 사용될까요?

이런 상황에서 사용하세요.

  • 일정/대진표 구성 (CROSS JOIN)
  • 계층적 관계 모델링 (SELF JOIN)
  • 같은 테이블 내 행들 비교
Quiz
0 / 1

SQL에서 CROSS JOIN은 두 테이블의 카르테시안 곱을 반환하여, 두 테이블 사이의 모든 가능한 행 쌍을 생성합니다.

학습 자료

AI 튜터

디자인

업로드

수업 노트

즐겨찾기

도움말

코드 에디터

코드 실행
코드 생성

DB 테이블 구조

실행 결과