본문 바로가기
Oracle SQL

[Oracle/SQL] SubQuery / Inline View

by WaterPunch 2021. 7. 30.

1. 서브쿼리 (SubQuery)

 - 하위 쿼리

 - SELECT 절의 결과를 WHERE 절에서 하나의 변수(상수)처럼 사용하고 싶을 때 사용

 - SQL  쿼리 내부에 액자구조로 또 다른 쿼리가 위차할 경우 내부의 쿼리를 서브쿼리라 함

 - 서브쿼리 바깥쪽 부분은 외부쿼리(Outer Query) 혹은 상위쿼리 라고 함

 - 서브쿼리는 SELECT , INSERT, UPDATE, DELETE문, 그리고 다른 서브쿼리 내부에서 사용될 수 있음

 - 복합적 쿼리를 위해 사용된다는 점에서 조인과 유사

 

1-1 단일행 서브쿼리(Single Row Subquery)

 - 서브쿼리의 결과가 1행 또는 0행인 경우 연산자를 통해 연결

=    :    같다
<>    :     같지 않다
>    :    초과(크다)
>=    :    이상(크거나 같다)
<    :    미만(작다)
<=    :    이하(작거나 같다)

 

1-2 다중행 서브쿼리(Multi Row Subquery)

 - 서브쿼리의 결과가 2개 이상일 수 있는 경우

 

in(a, b)    :    a와 b사이의 값
>any(a, b)    :    a,b 중 최소보다 큰
>all(a, b)    :    a,b 중 최대보다 큰
<any(a, b)    :    a,b 중 최대보다 작은
<all(a, b)    :    a,b 중 최소보다 작은

ex)

in(2200, 3000)    :    2200과 3000사이의 값
>any(2200, 3000)    :    2200, 3000 중 최소보다 큰 값 >> 2200 보다 큰 값
>all(2200, 3000)    :    2200, 3000 중 최대보다 큰 값 >> 3000 보다 큰 값
<any(2200, 3000)    :    2200, 3000 중 최대보다 작은 >> 3000 보다 작은 값
<all(2200, 3000)    :    2200, 3000 중 최소보다 작은 >> 2200 보다 작은 값

 

1-3 다중컬럼 서브쿼리(Multi Column SubQuery)

 - 서브쿼리의 결과로 여러 컬럼이 반환되는 경우(다중행)

 - 2개의 컬럼을 반환하는 서브쿼리를 사용할 경우, WHERE절에도 2개의 컬럼명을 적어주고 괄호로 묶어준다

 

1-4 스칼라 서브쿼리(Scalar SubQuery)

 - SELECT 절에 서브쿼리를 사용하여 하나의 컬럼처럼 사용하기 위한 목적

 - 조인(Join)의 대체표현식으로도 자주 사용

 - 하지만, 성능이 좋으 편도 아니면서, 주 표현식이 아니므로 알고만 있을 것

 

 

2. 인라인 뷰(Inline VIew)

 - 서브쿼리가 FROM 절 안에서 사용될 경우, 해당 서브쿼리를 '인라인 뷰' 라고 함

 - 서브쿼리의 결과가 하나의 테이블에 대한 뷰처럼 사용되기 때문

 

 

 

인라인뷰 , 뷰, 메터리얼 뷰는 모두 집합을 의미

 

JOIN - 두 테이블의 레코드(행)들을 교점(JOIN 조건)을 이용해 수평 접합하여 집합을 형성

 

인라인뷰 - FROM 절에 명시한 괄호로 묶은 서브쿼리 = 괄호로 묶은 물리적인 실체가 없는 가상 집합.

              SQL의 수행이 끝나고 시간이 지나면 휘발됨.

 

- 역시 물리적인 실체는 없으나 인라인뷰와 달리 DBMS의 메모리에 별도의 ID를 가지고 상주해 있는

      언제든 엑세스 할 수 있는 비휘발성 가상 집합.

 

출처 : https://narwhals.tistory.com/9

https://data-make.tistory.com/25

반응형

'Oracle SQL' 카테고리의 다른 글

[Oracle] 정규 표현식 - Meta Character  (0) 2021.08.19
[Oracle/SQL] From dual  (0) 2021.07.30

댓글