본문 바로가기
컴소니/DB

[오라클 DBMS 공부] 서브쿼리에 대해서 - 중첩쿼리, 인라인뷰 등

by 금소니 2020. 8. 24.
반응형

#109

1. 서브쿼리란?

서브라는 말처럼 메인쿼리가 있고 그 쿼리 내부에 존재하는 또 다른 쿼리를 의미합니다.

앞서 다른 파트를 공부할 때 잠깐 사용한 적이 있지만 서브쿼리의 경우 정말 많이 사용되어지고 만약 사용하지 못한다면 쿼리를 짜는데 있어 큰 어려움이 있습니다.

 

2. 서브쿼리 사용법

쿼리안에 괄호를 사용하여 또 다른 쿼리를 작성하여 주면 됩니다.

 

EX) 입사한지 가장 오래된 사람에 대하여 조회

물론 위의 데이터의 경우 서브쿼리를 사용하지 않고도 출력이 가능합니다.

하지만 간단하게 예를 들기위해 사용하였습니다.

 

위의 쿼리 중에서 괄호와 함께 시작되는 쿼리 부분이 서브쿼리입니다.

 

이를 이용하여 다양하게 사용할 수 있습니다.

 

어떻게 사용할 수 있는지 알아보도록 하겠습니다.

 

3. 서브쿼리 구분

먼저 메인쿼리와의 연관성에 따라 연관성이 없는 서브쿼리와 연관성이 있는 서브쿼리로 나눌 수 있습니다.

연관성이란 메인쿼리에서 사용하는 스키마를 사용하느냐 안하느냐입니다.

 

1) 연관성 없는 서브쿼리

서브쿼리의 결과가 메인쿼리와 연관성이 없이 독립적입니다.

EX) 입사한지 가장 오래된 사람에 대하여 조회

위에서 사용하였던 쿼리가 하나의 예가 될 수 있겠습니다.

 

어떻게 독립적인지가 궁금하시죠?

 

연관성 있는 서브쿼리를 바로 보시면 쉽게 이해하실 수 있습니다.

 

2) 연관성 있는 서브쿼리

서브쿼리의 결과가 메인쿼리와 연관성이 있어 서로 참조합니다.

EX) 사원들이 속하고 있는 부서 조회

여기서 중요하게 보실 점은 메인쿼리에 있는 dep.department_id와 서브쿼리의 emp.department_id를 조인으로 하여 연결되어 있습니다.

이 경우를 연관되어 있다고 합니다.

 

다음으로는 서브쿼리가 위치하는 곳에 따라 어떻게 구분하는지 알아보겠습니다.

 

1) SELECT 리스트 : 서브쿼리

SELECT 리스트에서 사용할 경우 그냥 일반 서브쿼리라고 부릅니다.

EX) 사원의 부서정보 조회

EMPLOYEES 테이블에선 부서코드만 있지만 SELECT 절에 서브쿼리를 이용하여 부서명에 대해 출력할 수 있게 하였습니다.

 

2) FROM 절 : 인라인 뷰

FROM 절에 사용될 경우 특별히 인라인 뷰라고 하여 뷰가 붙습니다.

하지만 뷰와는 다르며, 쿼리가 실행될 때만 사용되는 임시 뷰입니다.

서브쿼리지만 마치 FROM 절에 사용 되어 뷰처럼 사용되기 때문에 명칭이 붙게 되었습니다.

EX) 부서별 최고 연봉을 받는 사원 조회

인라인뷰를 사용할 때 주의할 점은 서브쿼리를 작성하여 해당 서브쿼리에 대하여 별칭을 꼭 작성해주셔야한다는 점입니다.

저의 경우 위의 예에서 dep_sal로 하여 별칭을 지어줬습니다.

 

3) WHERE 절 : 중첩쿼리

WHERE 절에서 사용할 경우 중첩쿼리라고 부릅니다.

EX) 입사한지 가장 오래된 사람에 대하여 조회

서브쿼리를 사용한다고 하면 가장 많이 사용됩니다.

반응형

댓글