정보처리기사 실기 시험에서 1문제(5점) 이상 반드시 출제되는 SQL 파트 중 수험생들이 가장 많은 함정에 빠지는 영역이 단일행 비교 연산자(=, >, <)와 다중행 연산자(IN, ANY, ALL, EXISTS)의 서브쿼리 혼용입니다. 기출 문제 5가지 패턴과 오답 탈출 공식을 정리합니다.
1. 다중행 연산자 핵심 비교 및 실행 논리표
서브쿼리가 2개 이상의 행(Row)을 반환할 때 단일행 비교 연산자를 사용하면 런타임 에러(ORA-01427)가 발생합니다.
| 다중행 연산자 | 조건 판정 논리 | 동일한 의미의 표현 |
|---|---|---|
| IN | 서브쿼리 반환 값 중 하나라도 일치하면 참 | = ANY (OR 조건 결합) |
| > ANY (또는 SOME) | 서브쿼리 반환 값 중 최솟값보다 크면 참 | > MIN(서브쿼리 결과) |
| < ANY (또는 SOME) | 서브쿼리 반환 값 중 최댓값보다 작으면 참 | < MAX(서브쿼리 결과) |
| > ALL | 서브쿼리 반환 값의 모든 값보다 커야 참 (최댓값 초과) | > MAX(서브쿼리 결과) |
| EXISTS | 서브쿼리 결과가 1건이라도 존재하면 참 | 행의 존재 유무만 검사 (속도 최적화) |
2. 시험장에서 반드시 기억해야 할 기출 코드 예제
[패턴 1] 영업부 사원들의 급여보다 높은 사람을 모두 출력:
SELECT 이름, 급여
FROM 직원
WHERE 급여 > ALL (SELECT 급여 FROM 직원 WHERE 부서 = '영업부');
위 구문은 영업부 사원 중 가장 급여가 높은 사원(MAX)의 급여보다 큰 직원만 조회합니다.
[패턴 2] NOT IN 서브쿼리 내 NULL 값 존재 시 함정:
서브쿼리 결과에 NULL이 포함되어 있으면 NOT IN 연산자는 항상 거짓(False) 또는 Unknown을 반환하여 아무런 행도 조회되지 않습니다. 따라서 반드시 WHERE 컬럼 IS NOT NULL 조건을 서브쿼리에 추가해야 합니다.
3. 정처기 실기 답안 작성 꿀팁
단답형 서술식으로 출제될 때 대소문자는 구분하지 않으나 세미콜론(;) 누락 여부는 채점관에 따라 감점 대상이 될 수 있으므로 문장 끝에 반드시 세미콜론을 표기하세요. 또한 SOME과 ANY는 표준 SQL에서 확실히 동일하게 채점됩니다.