본문 바로가기
DataBase/Oracle

SUB-QUERY) 서브쿼리란?, 서브쿼리의 조건

by 박채니 2022. 4. 21.

안녕하세요, 코린이의 코딩 학습기 채니 입니다.

 

개인 포스팅용으로 내용에 오류 및 잘못된 정보가 있을 수 있습니다.


SUB-QUERY

- main 쿼리에 속한 쿼리 (main 쿼리와 종속 관계)

- 존재하지 않는 조건 (직접적으로 처리 불가)에 근거해서 검색할 때 유용

- main 쿼리 실행 중에 sub 쿼리를 만나면, 우선 sub 쿼리 실행 후 그 결과를 main 쿼리에 반환

 

조건

① 반드시 소괄호 안에 위치

② order by 문법 사용 불가

③ 연산자 오른쪽에 작성할 것

 

노옹철 사원의 관리자 이름을 조회

[조인 버전]

select
    e.emp_name 사원명,
    m.emp_name 관리자명
from
    employee e left join employee m
        on e.manager_id = m.emp_id
where
    e.emp_name = '노옹철';

 

[서브쿼리 버전]

select
    e.emp_name
from
    employee e
where
    e.emp_id = (
        select
            m.manager_id
        from
            employee m
        where
            m.emp_name = '노옹철'
    );

 

전 사원의 평균 급여보다 많은 급여를 받는 사원 조회 (이름, 급여)

select
    emp_name,
    salary
from
    employee
where
    salary > (
        select
            trunc(avg(salary))
        from
            employee
    );

 

유형

결과 값에 따른 유형

① 단일행 단일컬럼 서브쿼리 (1행 1열)

② 다중행 단일컬럼 서브쿼리 (n행 1열)

③ 단일행 다중컬럼 서브쿼리 (1행 n열)

④ 다중행 다중컬럼 서브쿼리 (n행 m열)

 

메인쿼리 관계에 따른 구분

① 일반 서브쿼리

 : 서브쿼리 결과 값 → 메인쿼리 통보

② 상호연관 서브쿼리

: 메인쿼리 결과 값을 가지고 서브쿼리 처리 → 메인쿼리 통보

 

위치에 따른 구분

① 스칼라서브쿼리

② inline-view