서브쿼리란?
하나의 쿼리 안에 포함된 또 하나의 종속적 쿼리 (메인 쿼리가 서브쿼리를 포함한다.)
- 알려지지 않은 기준을 이용한 검색에 유용하다.
- 메인 쿼리가 실행되기 이전에 한 번만 실행된다.
- 한 문장에서 여러 번 사용 가능하다.
서브쿼리 사용 시 주의사항
- 괄호와 함께 사용되어야 한다.
- 서브쿼리 내에서 ORDER BY 절은 사용할 수 없다.
- 연산자의 오른쪽에 사용되어야 한다.
- 오로지 SELECT문으로만 작성할 수 있다.
서브쿼리 기본 문법
SELECT * FROM employee
WHERE 급여 >
(SELECT 급여 FROM employee WHERE 이름='elice');
반환에 따른 분류
# 단일 행 서브쿼리
결과가 한 행만 나와 1개의 값만 반환하고 메인쿼리로 전달한다.
연산자
= | 같다 |
<> | 같지 않다 |
> | 크다 |
>= | 크거나 같다 |
< | 작다 |
<= | 작거나 같다 |
# 다중 행 서브쿼리
결과를 2개 이상 반환하여 메인쿼리로 전달한다.
연산자
IN | or | 1 in (1, 2, 3, 4) |
ANY | or, 비교 연산 가능 | 10 <any (1, 2, 3, 4) |
ALL | and, 비교 연산 가능 | 99 >=all (99, 100, 101) |
위치에 따른 분류
# 일반적인 서브쿼리
WHERE 절에 사용되는 서브쿼리로 가장 일반적인 형태의 서브쿼리다.
# 스칼라 서브쿼리
SELECT 절에서 사용하는 서브쿼리로 오로지 한 행만 반환하며, JOIN을 사용한 것과 같은 결과를 나타낸다.
SELECT students.name, (
SELECT math
FROM middle_test as m
WHERE m.student_id = students.student_id
) AS middle_avg
FROM students;
'Database' 카테고리의 다른 글
[SQL] 계층형 질의 - WITH, CTE (0) | 2024.05.12 |
---|---|
[SQL] 집합 연산자 (0) | 2024.05.12 |
[DB/SQL] 다수의 테이블 제어 - 데이터 그룹 짓기 (0) | 2024.04.07 |
[DB/SQL] 키 Key (0) | 2024.04.07 |
[DB/SQL] 관계형 데이터베이스 쿼리 명령어 - DDL, DML, DCL (1) | 2024.04.07 |