문제
다음 중 특정 조건을 만족하는 행이 '존재하지 않는' 데이터를 조회하는 가장 적절한 방법은?
학생 중에서 '수학' 과목을 수강하지 않은 학생을 찾는 경우
① SELECT * FROM 학생 WHERE 학번 IN (SELECT 학번 FROM 수강 WHERE 과목명='수학') ② SELECT * FROM 학생 WHERE 학번 NOT IN (SELECT 학번 FROM 수강 WHERE 과목명='수학') ③ SELECT * FROM 학생 WHERE EXISTS (SELECT 1 FROM 수강 WHERE 수강.학번=학생.학번 AND 과목명='수학') ④ SELECT * FROM 학생 WHERE NOT EXISTS (SELECT 1 FROM 수강 WHERE 수강.학번=학생.학번 AND 과목명='수학')
정답
4번
해설
수학 과목을 수강하지 않은 학생을 찾으려면 NOT EXISTS를 사용해야 합니다. NOT EXISTS는 서브쿼리 결과가 존재하지 않을 때 TRUE를 반환하므로, 해당 학생이 수학 과목을 수강하지 않은 경우에만 조회됩니다. ①은 수강한 학생을 조회, ②는 NULL 처리 문제가 있을 수 있음, ③은 수강한 학생을 조회하는 경우입니다.