서브쿼리는 쿼리 안에 쿼리가 있는 형태이다.
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절에 오는 서브쿼리의 경우 메인쿼리의 컬렴과 비교 연산을 수행하는 용도로 많이 사용되는데 이 때 서브쿼리가 단일행 인지 아니면 다중행 인지 주의해야 한다. 다중행 서브쿼리를 단일행 비교 연산자로 연산을 하는 실수를 하기 쉽다.
'데이터베이스' 카테고리의 다른 글
[데이터베이스] ROLLUP() (0) | 2023.07.12 |
---|---|
[데이터베이스] 인덱스 개념 (0) | 2023.07.06 |
[데이터베이스] 오라클 RONUM (0) | 2023.07.04 |
[데이터베이스] 오라클 WITH절 사용방법 (0) | 2023.07.03 |
[데이터베이스]INTERSECT 키워드, CROSS JOIN (0) | 2023.06.30 |