Semi Join

세미 조인은 오른쪽을 붙이지 않고, 왼쪽 행의 포함 여부만 판정합니다.

학생 ⋉ 수강은 수강 기록이 존재하는 학생만 남깁니다. 결과 스키마는 왼쪽 학생 릴레이션 그대로입니다.

R ⋉ S

R의 각 행에 대해 S에 매칭이 있는지 확인하고, 통과한 R 행만 반환합니다.

1. 왼쪽 후보 R

학생 행이 결과 후보입니다.

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

2. 오른쪽은 검사표 S

수강 릴레이션은 붙는 데이터가 아니라 존재 검사에만 쓰입니다.

2021001 발견 수강: 데이터베이스
2021002 없음 매칭 실패라 제외
2021003 발견 수강: 운영체제

3. 결과는 통과한 R만

제외된 행은 결과에 보이지 않습니다.

2021001 김민수, 컴퓨터공학과 남음
2021003 이준호, 수학과 남음
결과 컬럼: 학번, 이름, 학과
수강 과목명이나 성적 컬럼은 붙지 않습니다.
일반 조인

왼쪽과 오른쪽 속성을 결합하므로 결과가 넓어지고, 매칭 수만큼 행이 늘 수 있습니다.

세미 조인

오른쪽은 존재 여부만 검사합니다. 왼쪽 행은 한 번만 남고 스키마도 왼쪽 그대로입니다.

SQL 감각

WHERE EXISTS처럼 조건을 만족하는 왼쪽 행만 필터링하는 흐름과 가깝습니다.