이처럼 EXISTS나 NOT EXISTS 연산자를 사용할 때는 조건 서브쿼리의 WHERE 절에 조건을 명시합니다. 엄밀히 말하면 메인쿼리 테이블과 서브쿼리 간의 조인 조건을 주는 방식이죠.
특히 EXISTS 연산자를 사용하는 방식은 EXISTS 연산자와 조건 서브쿼리를 부분적으로 조인한다고 해서 세미조인(semijoin)이라고 합니다. 내부 조인과 외부 조인에서는 조인에 참여하는 테이블의 칼럼을 모두 조회할 수 있지만, 세미조인에서는 메인쿼리에 있는 테이블의 칼럼을 참조해 조건을 확인하는 용도로만 사용하기 때문에 반쪽짜리(semi) 조인이라고 할 수 있습니다.
그리고 NOT EXISTS 연산자는 EXISTS 연산자와 반대로 존재하지 않는 건을 확인하므로 반대를 뜻하는 안티조인(antijoin)이라고 합니다.
지금까지 서브쿼리를 살펴봤습니다. SQL을 처음 배울 때 SQL의 여러 기능 중 서브쿼리를 가장 어려워합니다. SQL 문이 길고, 두 단계 이상으로 데이터를 조회하거나 집계해야 하기 때문이죠. 하지만 기본적인 데이터 분석을 위한 쿼리를 작성할 때 서브쿼리는 필수라는 점을 기억하세요.