문제
다음 중 스칼라 서브쿼리(Scalar Subquery)에 대한 설명으로 올바르지 않은 것은?
① 원칙적으로 단 1개의 행과 1개의 컬럼만 반환해야 한다. ② 메인쿼리의 결과 건수만큼 반복 수행된다. ③ 서브쿼리의 실행 결과가 0건일 경우 에러를 발생시킨다. ④ SELECT 절 등 단일 값이 요구되는 곳에 주로 사용된다.
정답
3번
해설
정답: 3. 스칼라 서브쿼리는 결과가 0건이면 에러가 아니라 NULL을 반환한다. 따라서 ③은 틀린 설명이다.
오답 풀이
- ①: 스칼라 서브쿼리는 단일 값(1행 1컬럼)을 반환하는 것이 원칙이다. 2건 이상이면 "single-row subquery returns more than one row" 에러가 난다. 옳은 설명.
- ②: SELECT 절의 스칼라 서브쿼리는 메인쿼리가 반환하는 각 행마다 반복 평가된다. 옳은 설명.
- ③: 정답. 0건일 때는 에러가 아니라 NULL을 반환한다.
- ④: SELECT 절, 일부 WHERE 비교 등 단일 값이 필요한 위치에서 사용된다. 옳은 설명.
보충 개념 스칼라 서브쿼리는 하나의 값을 돌려주는 서브쿼리로, 2건 이상이면 에러, 0건이면 NULL이다. SELECT 절에 두면 메인쿼리 행마다 실행되므로 동일 입력에 캐싱(필터 후 캐시)으로 성능을 보완한다.