목표: 서브쿼리(Subquery) 사용법 익히기
일반적으로 서브쿼리는(Subquery)는 하나의 절(SELECT, INSERT, UPDATE, DELETE) 안에 포함(nested or inside)되어 있는 또 다른 SELECT 문을 말한다.
외부에 있는 절을 메인쿼리(외부쿼리, Outer query), 내부에 있는 SELECT문을 서브쿼리(내부쿼리, Inner query)라고 합니다.
* 흔히 SELECT 문 안에있는 SELECT 문이라고 설명하고 있지만, 엄밀히 따지면 SELECT절 이외에도 INSERT, DELECT, UPDATE 절에서도 사용할 수 있다.
SELECT, INSERT, UPDATE, DELETE 절에서 사용되는 서브쿼리에 대한 그림들이다.
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 (중첩 서브쿼리) |
서브쿼리 안에 다른 서브쿼리가 존재하는 경우 |
'🎪 놀고있네 > MS SQL' 카테고리의 다른 글
[SQL Server] Database 의 스키마 확인하기 (0) | 2019.12.07 |
---|---|
[SQL Server] varchar, nvarchar 뭘 사용해야 하죠? (0) | 2019.12.06 |
[SQL Server] MERGE 사용하기 (INSERT & UPDATE & DELETE) (0) | 2019.11.27 |
[SQL Server] MERGE 사용하기 (INSERT & UPDATE) (0) | 2019.11.27 |
[SQL Server] SELECT문을 이용한 INSERT (0) | 2019.11.18 |
댓글