메뉴 여닫기
개인 메뉴 토글
로그인하지 않음
만약 지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
편집 요약 없음
2번째 줄: 2번째 줄:


=== 서브쿼리의 위치에 따른 명칭 ===
=== 서브쿼리의 위치에 따른 명칭 ===
:    - SELECT문에 있는 서브쿼리 : 스칼라 서브쿼리
{| class="wikitable"
:    - FROM절에 있는 서브쿼리 : 인라인 뷰
|+ 서브쿼리 사용 위치에 따른 명칭
:    - WHERE절에 있는 서브쿼리 : 서브쿼리
|-
! 명칭 !! 사용 위치
|-
| 스칼라 서브쿼리|| SELECT 절 에 있는 서브쿼리  
<source lang=sql>
select col1
    , (select user from dual) user -- 스칼라 쿼리
    , ....
</source>
|-
| 인라인 뷰 || FROM절에 있는 서브쿼리  
<source lang=sql>
select ....
  from (select *
          from tb_xxx) -- 인라인 뷰  
</source>
|-
| 서브쿼리 || WHERE절에 있는 서브쿼리  
<source lang=sql>
select ....
  from tb_a
where col1 in (select col1
                  from tb_xxx) -- 서브쿼리  
</source>
|}
 





2025년 4월 7일 (월) 17:22 판

서브쿼리

서브쿼리의 위치에 따른 명칭

서브쿼리 사용 위치에 따른 명칭
명칭 사용 위치
스칼라 서브쿼리 SELECT 절 에 있는 서브쿼리
select col1
     , (select user from dual) user -- 스칼라 쿼리 
     , ....
인라인 뷰 FROM절에 있는 서브쿼리
select ....
  from (select * 
          from tb_xxx) -- 인라인 뷰
서브쿼리 WHERE절에 있는 서브쿼리
select ....
  from tb_a
 where col1 in (select col1 
                  from tb_xxx) -- 서브쿼리


서브쿼리의 반환 값에 따른 서브쿼리 종류

- 단일 행 서브쿼리(Single-Row Subquery) : 서브쿼리의 결과가 1행
- 다중 행 서브쿼리(Multiple-Row Subquery) : 서브쿼리의 결과가 여러 행
- 다중 컬럼 서브쿼리(Multi-Column Subquery) : 서브쿼리의 결과가 여러 컬럼


스칼라 서브쿼리(Scala Subquery)

- SELECT문에서 사용하는 서브쿼리로 1행만 반환
- 입력값(메인쿼리와 조인하는 컬럼)의 Distinct한 종류가 적을수록 캐싱 효과가 좋음


상호연관 서브쿼리(Correlated Subquery)

- 메인쿼리의 값을 서브쿼리가 사용하고, 서브쿼리의 값을 받아서 메인쿼리가 계산하는 구조의 쿼리