- 서브쿼리 (SubQuery)
- SELECT 문 안에 SELECT 문을 서브쿼리라고 한다.
- 복잡한 데이터 추출 및 조작시 사용
- 서브쿼리는 괄호 안에 기술해야 하고, SELECT, FROM, WHERE, HAVING 절 등에 넣어서 사용 가능
- 서브쿼리가 먼저 실행 후 메인 쿼리 실행
- 단일 행 서브쿼리 (Single-Row SubQuery)
- 서브쿼리의 결과로 단일 행 반환
- =, <, ≤, ≥, >, <> 등 단일 행 비교연산자 사용하여 연결
- 예시
-
SELECT 컬럼명 FROM 테이블명 WHERE 컬럼명 = (SELECT MAX(컬럼명) FROM 테이블명);
-
- 복수 행 서브쿼리 (Multi-Row SubQuery)
- 서브쿼리의 결과가 여러 행
- IN, ALL, ANY, SOME, EXISTS 같은 복수행 비교 연산자 사용하여 연결
- IN
- 서브쿼리 결과 중 일치하는 것이 하나라도 있으면 참
- ANY, SOME
- 하나 이상 일치하면 참
- ALL
- 각 결과값이 모두 일치하면 참
- EXISTS
- 비교 조건을 만족하는 결과가 존재하면 참
- IN
- 인라인 뷰(Inline View)
- FROM 절에서 서브쿼리 사용하는 것을 인라인 뷰라고 한다.
- 뷰에는 반드시 별명 지정, 해당 별명은 테이블명처럼 사용 가능
- 스칼라 서브쿼리 (Scalar Subquery)
- SELECT 절 내에서 서브쿼리 사용 시 이때 서브쿼리가 하나의 값을 생성하는 형태를 스칼라 서브쿼리라고 한다.
- 정확히 한 개의 행에 대해 한개의 값을 반환하는 서브쿼리
- 0개 반환시 메인 쿼리 결과는 NULL
- 2개 이상 반환시 오류 발생
- 쿼리를 실행하여 반환되는 값은 메인 쿼리에서 사용
- CTE(Common Table Expression)
- 쿼리로 만든 임시 데이터셋으로 WITH 절에서 정의한다.
- 쿼래 내에서 여러 번 참조 가능
- 하나의 쿼리를 논리적인 블록으로 나누기 가능
- 형식
- WITH CTE명 AS ( SELECT문 )
'SQL' 카테고리의 다른 글
[SQL] DML (INSERT, UPDATE, DELETE) (0) | 2024.03.22 |
---|---|
[SQL] 데이터 타입 (0) | 2024.03.22 |
[SQL] JOIN (CROSS, INNER, OUTER, SELF) (0) | 2024.03.22 |
[SQL] WHERE 문 (GROUP BY, HAVING), 집계 함수 (0) | 2024.03.22 |
[SQL] 단일행 함수 (문자형, 숫자형, 날짜시간, 형변환, 제어흐름) (0) | 2024.03.22 |