이 글에서 꼭 잡아야 할 것
서브쿼리는 하나의 질의 안에서 다른 질의를 이용하는 문법이다. 먼저 한 값을 구하고, 그 값을 바탕으로 바깥 질의를 실행하는 단일행 서브쿼리부터 이해하면 전체 구조가 쉬워진다.
서브쿼리는 복잡한 조건을 단계적으로 쪼개는 데 강력하다. 예를 들어 평균 급여보다 높은 직원을 찾는 문제는 먼저 평균 급여를 구한 뒤 그 결과와 각 직원 급여를 비교하면 훨씬 자연스럽게 읽힌다.
개념 지도와 이해 포인트
대표 문법 패턴
SELECT employee_id, last_name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
);
문법 읽는 포인트
- 단일행 서브쿼리는 결과가 하나여야 한다.
- 안쪽 질의가 만드는 값의 타입도 바깥 비교와 맞아야 한다.
- 복잡한 조건을 여러 단계로 나누어 읽을 수 있다는 점이 가장 큰 장점이다.
핵심 용어
- Subquery
- Single Row
- Nested Query
평균 급여보다 높은 직원 찾기
평균, 최솟값, 특정 부서의 기준값처럼 먼저 한 값을 구한 뒤 전체와 비교하는 문제는 단일행 서브쿼리로 아주 자연스럽게 풀린다.
SELECT employee_id, last_name, salary
FROM employees
WHERE salary > (
SELECT AVG(salary)
FROM employees
)
ORDER BY salary DESC;
수험 체크포인트와 자주 하는 실수
시험 체크포인트
- 단일행 연산자와 다중행 연산자를 구분하는 것이 서브쿼리 문제의 핵심이다.
- 서브쿼리 결과가 여러 행이 되면 오류가 나므로 데이터 조건을 항상 확인하자.
- 평균, 최대값, 특정 한 값 비교 유형은 단일행 서브쿼리의 대표 패턴이다.
자주 하는 실수
- 여러 행을 반환할 수 있는 서브쿼리에 `=`를 사용하는 실수
- 안쪽 질의와 바깥 질의의 비교 컬럼 타입을 맞추지 않는 실수
- 서브쿼리 실행 순서를 반대로 이해하는 실수
연결 학습
단일행 서브쿼리를 읽을 수 있으면 다중행 서브쿼리도 훨씬 쉬워진다. 다음 챕터에서는 IN, ANY, ALL과 함께 확장한다.
댓글 0
작성자 이름과 댓글 내용을 입력하면 바로 등록됩니다. 답글은 한 단계까지 지원하고, 댓글은 최대 200자까지 작성할 수 있습니다.
같은 카테고리에서 이어서 읽기
지금 읽은 글과 가까운 흐름의 글 5개를 모아 두었습니다. 바로 앞뒤 문맥을 이어서 읽고 싶을 때 가장 편합니다.
조인의 출발점: ANSI INNER JOIN
관계형 데이터베이스의 핵심은 테이블을 연결해 의미를 복원하는 데 있다. INNER JOIN은 가장 기본적인 조인으로, 서로 매칭되는 데이터만 결합한다.
OUTER JOIN과 오라클 전통 조인 문법
실무에서는 매칭되지 않은 데이터도 보고 싶을 때가 많다. OUTER JOIN은 누락된 쪽을 NULL로 채워 결과에 남기며, 오라클 전통 `(+)` 문법도 시험에서 여전히 자주 등장한다.
SELF JOIN, CROSS JOIN, 비등가 조인
조인은 같은 테이블을 다시 붙일 수도 있고, 범위 조건으로 연결할 수도 있다. SELF JOIN, CROSS JOIN, 비등가 조인은 조인 개념을 깊게 이해했는지 확인하는 좋은 주제다.
다중행 서브쿼리와 IN, ANY, ALL
서브쿼리 결과가 여러 행이 되는 순간 비교 연산자 선택이 달라진다. IN, ANY, ALL을 정확히 구분하면 다중행 서브쿼리 문제를 안정적으로 풀 수 있다.
상호연관 서브쿼리와 EXISTS
상호연관 서브쿼리는 바깥 질의의 각 행이 안쪽 질의에 영향을 준다. EXISTS와 함께 익히면 “관련 데이터가 있는가”를 검사하는 문제를 매우 자연스럽게 풀 수 있다.
댓글을 불러오는 중입니다.