더북(TheBook)

IN 대신 NOT IN을 사용했기 때문에 40대가 아닌 사원이 속한 부서가 조회됩니다. 이번에는 EXISTS 연산자를 사용한 쿼리 10-7을 안티 조인으로 변경해 보죠.

쿼리 10-9 NOT EXISTS를 사용한 안티 조인(쿼리 10-7을 안티 조인으로 변경)

SELECT *
  FROM dept_master a      
 WHERE NOT EXISTS ( SELECT 1
                      FROM emp_master b
                     WHERE b.age BETWEEN 40 AND 49
                       AND a.dept_id = b.dept_id
                   );

 

▲ 그림 10-9 쿼리 10-9를 실행한 결과

 

EXISTS가 존재 여부를 체크한다면, NOT EXISTS는 그 반대로 존재하지 않는 건을 체크하므로 쿼리 10-9 역시 쿼리 10-8을 실행한 결과와 같습니다.

조인에서 외부 조인은 다른 조인 방법과 비교해 사용 방법과 그 결과가 다르기 때문에 반드시 숙지해야 합니다. 그러나 나머지 조인 방식은 내부 조인 형식을 취하고 있으므로 외부 조인만 주의해서 사용하면 조인은 그리 어렵지 않을 것이라 생각되는군요.

서브쿼리를 끝으로 지금까지 DML의 기본인 SELECT 문장에 대해 알아보았습니다. 가장 많이 사용하는 문장이라서 알아둬야 할 내용도 꽤 많았습니다. 지금까지 배운 내용을 여러 번 읽은 다음 예제 쿼리를 실행하고 결과를 확인해 보세요. 또한, 예제 쿼리를 조금씩 바꾸어 가며 결과가 어떻게 달라지는지 확인하고, 만약 오류가 발생했다면 오류 메시지를 주의 깊게 읽은 후 오류를 수정해 보세요. 이러한 과정을 통해 여러분의 SQL 실력이 향상될 것입니다. 다음 장에서는 4장에서 배웠던 INSERT, DELETE 문장과 SELECT 문장을 결합하는 방법을 살펴보고, 데이터를 수정하는 UPDATE 문에 대해 알아보도록 하겠습니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.