문제
서브쿼리에 대한 설명 중 틀린 것은?
① 다중행 서브쿼리는 단일행 비교 연산자(=)와 함께 쓸 수 있다. ② 서브쿼리는 메인쿼리보다 먼저 실행될 수 있다. ③ 서브쿼리의 반환 건수에 따라 단일행, 다중행으로 나뉜다. ④ 인라인 뷰는 FROM 절에 사용된다.
정답
1번
해설
정답: 1. 다중행 서브쿼리는 여러 행을 반환하므로 단일행 비교 연산자(=, >, < 등)와 함께 쓸 수 없고, IN·ANY·ALL·EXISTS 같은 다중행 연산자를 사용해야 한다. 다중행 결과에 '='를 쓰면 ORA-01427(단일 행 하위 질의에 두 개 이상의 행이 반환됨) 오류가 발생한다.
오답 풀이
- ①: 정답(틀린 설명). 다중행 서브쿼리에 '='를 쓰면 오류가 나므로 다중행 연산자를 써야 한다.
- ②: 서브쿼리(특히 비연관 서브쿼리)는 메인쿼리보다 먼저 실행될 수 있으므로 옳다.
- ③: 반환 건수에 따라 단일행(1건)·다중행(여러 건) 서브쿼리로 구분되므로 옳다.
- ④: 인라인 뷰는 FROM 절에 쓰이는 서브쿼리이므로 옳다.
보충 개념 단일행 서브쿼리는 =, >, <, >=, <=, <> 등 단일행 연산자와 쓰고, 다중행 서브쿼리는 IN, ANY/SOME, ALL, EXISTS 등 다중행 연산자와 함께 사용한다. SELECT 절의 스칼라 서브쿼리, FROM 절의 인라인 뷰, WHERE 절의 중첩 서브쿼리로 위치별 분류도 가능하다.