DB

[DB/SQL] 서브쿼리의 종류 - 스칼라 서브쿼리, 인라인 뷰, 중첩 서브쿼리

hrming 2024. 10. 4. 17:34

■ 서브 쿼리

- 서브쿼리란 메인쿼리에 속해있으며 부모와 자식같은 계층적인 관계임

- 서브쿼리가 메인쿼리에 종속되기 때문에 단독적으로 실행할 수 없고, 메인쿼리를 필터링하는 방식으로 사용됨

- 서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없음

- 메인쿼리에서 서브쿼리의 칼럼을 사용할 수 있는 경우는 `스칼라 서브쿼리`, `인라인 뷰`

 

종류 설명
스칼라 서브쿼리
(Scalar Subquery)
SELECT 절에 위치하며, 한 레코드당 정확히 하나의 값을 반환하는 서브쿼리
(단일행, 단일 칼럼을 반환)

** 다중 행 값이 조회되면,
 
"ORA-01427: single-row subquery returns more than one row" 라는 오류 발생
인라인 뷰
(Inline View)
FROM 절에 위치하는 서브쿼리로, 결과는 반드시 하나의 테이블로 리턴되어야 함

- 테이블의 일부 데이터만을 불러와 복잡한 쿼리를 단순화 할 수 있음
- 쿼리의 가독성이 높음
- 인라인 뷰는 SQL문이 실행될 때 임시적으로 생성되는 동적인 뷰 `Dynamic View`.
(Dynamic View ↔ Static View)

** SQL을 좀 더 빠른 속도로 사용하기 위해 사용하지만,  SQL을 구성할 때 잘못 사용하게 되면 액세스 속도를 저하시키는 경우가 많으므로 사용에 주의  
중첩 서브쿼리
(Nested Subquery)
WHERE 절에 위치하며 결과집합을 한정하기 위한 서브쿼리로,
서브쿼리가 메인쿼리 칼럼을 참조할 때 상관관계가 있는 서브쿼리
(단일행, 다중행을 반환)

 

 


 

참고 및 출처 : 

https://dev-kwon.tistory.com/14

 

[Oracle] 스칼라 서브쿼리, 인라인뷰, 서브쿼리

서브쿼리란 하나의 SQL문 안에 포함되어 있는 또 다른 SQL문을 말한다. SELECT (SELECT ... ) --> 스칼라 서브쿼리 FROM (SELECT ... ) --> 인라인 뷰 WHERE ... 스칼라 서브쿼리 : Select절에 있는 Subquery -- 특징 하

dev-kwon.tistory.com

 

 

https://yunamom.tistory.com/353

 

[Oracle] 서브쿼리의 종류 - ( 스칼라, 인라인뷰, 중첩 )

서브쿼리란 무엇인가? 서브쿼리란 메인쿼리에 속해 있으며 부모와 자식같은 계층적인 관계이다. 자식이 부모에 속해있는것과 마찬가지로 서브쿼리가 메인쿼리에 종속되기 때문에 단독적으로

yunamom.tistory.com