본문 바로가기

데이터베이스

[데이터베이스] 서브쿼리 종류

서브쿼리는 쿼리 안에 쿼리가 있는 형태이다.

 

SELECT ROWNUM, P.* 
FROM (
SELECT *  FROM PLAYER
WHERE HEIGHT IS NOT NULL
ORDER BY PLAYER.HEIGHT DESC 
) P
WHERE ROWNUM <= 10;

 

이처럼 from 절 소괄호 안에 있는 쿼리를 서브쿼리라고 하며 소괄호 밖의 전체 쿼리를 메인쿼리라고 한다. 

서브쿼리는 FROM절 뿐 만 아니라 SELECT와 WHERE 절에도 올 수  있다. 이 때 각각의 서브쿼리를 부르는 명칭이 다르다.

 

SELECT 절에 오는 서브쿼리를 스칼라 서브쿼리라고하고, FROM절에 오는 서브쿼리를 인라인 뷰라고 한다.

WHERE절에 오는 서브쿼리의 경우 메인쿼리의 컬렴과 비교 연산을 수행하는 용도로 많이 사용되는데 이 때 서브쿼리가 단일행 인지 아니면 다중행 인지 주의해야 한다. 다중행 서브쿼리를 단일행 비교 연산자로 연산을 하는 실수를 하기 쉽다.