본문 바로가기
🎪 놀고있네/MS SQL

[SQL Server] 서브쿼리(Subquery) 란?

by 냥장판 2019. 11. 29.

목표: 서브쿼리(Subquery) 사용법 익히기

 

By 냥장판

일반적으로 서브쿼리는(Subquery)는 하나의 절(SELECT, INSERT, UPDATE, DELETE) 안에 포함(nested or inside)되어 있는 또 다른 SELECT 문을 말한다.

외부에 있는 절을 메인쿼리(외부쿼리, Outer query), 내부에 있는 SELECT문을 서브쿼리(내부쿼리, Inner query)라고 합니다.

 

* 흔히 SELECT 문 안에있는 SELECT 문이라고 설명하고 있지만, 엄밀히 따지면 SELECT절 이외에도 INSERT, DELECT, UPDATE 절에서도 사용할 수 있다. 

 

By 냥장판

SELECT, INSERT, UPDATE, DELETE 절에서 사용되는 서브쿼리에 대한 그림들이다.

 

By 냥장판

1. 서브쿼리 위치

 

서브쿼리가 위치할 수 있는 곳은 SELECT, FROM, WHERE 절이다.

결국 기본 쿼리 구조 내에서는 자유롭게 사용할 수 있다.

 

위치 그림 설명

SELECT 절

* Scala Subquery (스칼라 서브쿼리)

FROM 절
* Inline View라고 하며 테이블명 대신 기술하는 임시적으로 생성되는 동적 View
WHERE 절

* Nested Subquery

일반적인 서브쿼리

 

2. 서브쿼리 유형

 

서브쿼리의 유형은 서브쿼리 실행결과 반환되는 데이터 형태에 의해 구분된다.

구분 설명

Single row subquery

(단일 행 반환 서브쿼리)

서브쿼리의 실행결과로 항상 1건 이하의 행을 반환하는 서브쿼리

* 단일 행을 반환하기 위해서는 비교연산자(=, <, < =, >, >=, <>)가 사용됨

Multiple row subqueries

(다중 행 반환 서브쿼리)

서브쿼리의 실행결과로 항상 1건 이상의 행을 반환하는 서브쿼리

* 다중 행을 반환하기 위해서는 다중값을 반환하는 연산자(IN, ALL, ANY, SOME, EXISTS)가 사용됨

Multiple column subqueries

(다중 열 반환 서브쿼리)

서브쿼리의 실행결과로 항상 1건 이상의 열을 반환하는 서브쿼리

Correlated subqueries

(상호관련 서브쿼리)

메인쿼리와 서브쿼리간에 상관관계가 존재해서, 결과값을 서로 주고받는 식으로 처리되는 경우

Nested subqueries

(중첩 서브쿼리)

 서브쿼리 안에 다른 서브쿼리가 존재하는 경우

 

 

댓글