1. 서브쿼리 (Subquery)
SQL 쿼리문의 하부 절에 또 다른 SQL 쿼리문을 중첩하여 사용하는 기법을 말한다. 주의할 점은, 서브쿼리는 항상 연산자의 우측에 존재해야 하며 반드시 괄호로 묶어줘야 한다는 것이다. 서브쿼리는 다음과 같이 간단히 분류해볼 수 있다.
대분류 | 소분류 |
위치에 따른 분류 | SELECT 문에 존재하는 서브쿼리
FROM 절에 존재하는 서브쿼리
WHERE 절에 존재하는 서브쿼리 |
반환 값에 따른 분류 | 단일 행 서브쿼리 (단일 행 + 단일 열)
다중 행 서브쿼리 (다중 행 + 단일 열)
다중 열 서브쿼리 (다중 행 + 다중 열) |
2. 서브쿼리의 분류
2-1. 단일 행 서브쿼리 (Single Row Subquery)
단일 행 비교 연산자인
=
, <
, >
, <=
, >=
등을 사용할 수 있다.EX) 이름이 SMITH인 직원의 부서에 속한 직원들의 이름/부서번호를 출력
2-2. 다중 행 서브쿼리 (Multiple Row Subquery)
다중 행 비교 연산자인
IN
, > ANY
, < ALL
, < ANY
, > ALL
, EXIST
등을 사용할 수 있다.EX) 직업이 PRESIDENT인 직원의 부서들에 속한 직원들의 이름/직업/부서번호를 출력
2-3. 다중 열 서브쿼리 (Multiple Column Subquery)
대응하는 컬럼의 개수가 반드시 같아야 한다.
EX) 부서별로 봉급이 최소인 직원들의 부서번호/이름/봉급을 출력
2-4. 스칼라 서브쿼리 (Scala Subquery)
SELECT 문에서 사용하는 서브쿼리로, 1행만 반환한다.
EX) 직업이 MANAGER인 직원들의 이름/부서이름/직업을 출력
2-5. 상호연관 서브쿼리 (Correlated Subquery)
메인쿼리의 값을 서브쿼리에게 전달하고 서브쿼리를 수행한 뒤, 그 결과를 다시 메인쿼리로 돌려주고 메인쿼리를 수행하는 것이다.
EX) 자신이 속한 부서의 봉급 평균보다 많은 봉급을 받는 직원들의 이름/부서번호/봉급을 부서 번호순으로 출력
본 글은 아래 링크의 내용을 참고하여 학습한 내용을 나름대로 정리한 글임을 밝힙니다.