
쿼리 안에 존재하는 또 다른 쿼리
| 서브쿼리 종류 | 위치 | 설명 |
|---|---|---|
| 스칼라 서브쿼리 (Scalar Subquery) | Select | * 컬럼이 오는 곳에 대부분 위치 가능 * 반드시 하나의 값을 반환 |
| 인라인 뷰 (Inline View) | From | * 테이블명이 올수 있는 곳이 위치 가능 * ⭐️ 동적 뷰 (Dynamic View)라고도 한다. |
| 중첩 쿼리 (Nested Subquery) | Where, Having |
| 서브쿼리 종류 | 설명 |
|---|---|
| Un-Correlated(비연관) 서브 쿼리 | * 서브쿼리가 메인쿼리 컬럼을 사용하지 않음 * 메인쿼리에 값을 제공하기 위한 목적으로 주로 사용 |
| Correlated(연관) 서브 쿼리 | * 서브쿼리가 메인쿼리의 컬럼을 사용함 * 일반적으로 메인쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인하고자 할때 사용함 |
| 서브쿼리 종류 | 설명 |
|---|---|
| Single Row 서브쿼리 (단일 행 서브쿼리) | * 서브쿼리의 실행결과가 항상 1건 * 단일행 비교 연산자와 함께 사용된다. |
| Multi Row 서브쿼리 (다중 행 서브쿼리) | * 서브쿼리의 실행 결과가 여러건 * 다중행 비교연산자와 함께 사용된다. |
| Multi Column 서브쿼리 (다중 컬럼 서브쿼리) | * 서브쿼리의 실행 결과로 여러 컬럼을 반환. * 메인 쿼리 조건절에 여러컬럼을 돈시에 비교 가능. * 서브쿼리와 메인쿼리에서 비교하고자 하는 컬럼 개수와 위치가 일치해야한다. |
⭐️ 다중컬럼 서브쿼리는 SQL Server에서는 지원하지 않는다.
=, <, <=, >, >=, <>

⭐️ 다중행 비교연산자는 단일행 비교연산자로 대체 가능하다. (반대는 안됨)
가상 테이블
CREATE VIEW 뷰명 AS (
select ...
);
DROP VIEW 뷰명;