본문 바로가기
자격증/SQLD

SQL 기본 및 활용 - SQL활용 - 서브쿼리 (Subquery)

by Love of fate 2024. 3. 2.
728x90
반응형

[01] 서브쿼리(Subquery)

 - 하나의 쿼리 안에 존재하는 또 다른 쿼리이다. 

 - 엄마쿼리를 메인쿼리라고 부르고 안에 있는 아기쿼리를 서브쿼리라고 부른다.

SELECT 절  스칼라 서브쿼리(Scalcar Subquery)
FROM절 인라인 뷰 (Inline View)
WHERE / HAVING 절 중첩 서브쿼리 (Nested Subquery)

 

(1) 스칼라 서브쿼리 (Scalar Subquery)

 - 주로  SELECT절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다. 

 - 컬럼 대신 사용되므로 반드시 하나의 값만을 반환해야 하며 그렇지 않은 경우 에러를 발생시킨다.

 

(2) 인라인 뷰 (Inline View)

 - FROM절 등 테이블명이 올 수 있는 위치에 사용 가능하다.

 

(3) 중첩 서브쿼리 (Nested Subquery)

 1) Where 절과 Having절에 사용할 수 있다. 중첩 서브 쿼리는 메인쿼리와의 관계에 따라 다음과 같이 나눌 수 있다. 

비연관 서브쿼리 (Uncorrelated Subquery) 메인쿼리와 관계를 맺고 있지 않음
연관 서브쿼리 (Correlated Subquery) 메인쿼리와 관계를 맺고 있음

 

     1. 비연관 서브쿼리(Un- Correlated Subquery)   - 서브쿼리 내에 메인쿼리의 컬럼이 존재하지 않는다. 

     2. 연관 서브쿼리 (Correlated Subquery) : 서브쿼리 내에 메인쿼리의 칼럼이 존재한다. 

 

 2) 중첩 서브쿼리는 반환하는 데이터 현태에 따라 다음과 같이 나눌 수 있다. 

 

단일 행(Single Row) 서브쿼리 서브쿼리가 1건 이하의 데이터를 반환 
단일 행 비교 연산자와 함께 사용 
- 항상 1건 이하의 결과만 반환한다. 

=, <, >, <=, >=, <>
다중 행(Multi Row) 서브쿼리 서브쿼리가 여러 건의 데이터를 반환
다중 행 비교 연산자와 함께 사용
- 2건 이상의 행을 반환

IN, ALL, ANY, SOME, EXISTS
다중 컬럼(Multi Column) 서브쿼리 서브쿼리가 여러 컬럼의 데이터를 반환

 

728x90
반응형