핵심 관찰

세미 조인은 오른쪽 테이블을 붙이지 않고,
왼쪽 행을 남길지 판정합니다.

학생 ⋉ 수강은 "수강 기록이 있는 학생만 남긴다"는 뜻입니다. 결과에는 학생 속성만 보이고, 수강이 여러 건이어도 학생 행은 한 번만 남습니다.

왼쪽 릴레이션

학생 행이 기준입니다

세미 조인은 먼저 학생 각 행을 보고, 오른쪽에 매칭이 있는지만 확인합니다.

2021001 김민수 컴퓨터공학과
2021002 박서연 전자공학과
2021003 이준호 수학과
조인 조건

수강에 같은 학번이 있는가?

오른쪽 릴레이션은 결과를 넓히는 용도가 아니라, 포함 여부를 결정하는 검사표입니다.

있으면 포함 김민수, 이준호는 수강 기록이 있어 학생 행이 남음
없으면 제외 박서연은 매칭이 없어 학생 행 자체가 사라짐
조건: 학생.학번 = 수강.학번
의미: 존재 여부만 확인
결과 릴레이션

남는 것은 학생 쪽 속성뿐

수강 과목명이 결과 컬럼으로 붙지 않습니다. 세미 조인은 왼쪽 스키마를 그대로 유지합니다.

2021001 김민수 남음
2021002 박서연 제외
2021003 이준호 남음
결과 컬럼: 학번, 이름, 학과
포인트: 수강이 여러 건이어도 학생 1행만 유지
일반 조인 세미 조인
결과 컬럼 학생 + 수강 속성이 함께 붙음 학생 속성만 남음
매칭이 여러 건이면 학생 행이 수강 건수만큼 반복될 수 있음 학생 행은 한 번만 남음
SQL 감각 `JOIN`으로 행을 결합 `WHERE EXISTS`로 존재만 확인