SQL & 데이터베이스/SQL 기본 문법 & 오류
[SQL] 서브쿼리(Subquery) 개념 및 활용 방법
Jinsapp
2025. 3. 12. 18:02
[SQL] 서브쿼리(Subquery) 개념 및 활용 방법
1. 서브쿼리란?
서브쿼리(Subquery)는 **하나의 SQL 문 안에서 또 다른 SQL 문을 포함하는 쿼리**를 의미합니다.
즉, SELECT, INSERT, UPDATE, DELETE 등의 주요 SQL 문에서 보조적으로 실행되는 쿼리를 말합니다.
2. 서브쿼리 기본 구조
SELECT 컬럼명
FROM 테이블명
WHERE 컬럼명 = (SELECT 컬럼명 FROM 테이블명 WHERE 조건);
✅ 예제: 최고 연봉을 받는 직원 찾기
SELECT 이름, 연봉
FROM 직원
WHERE 연봉 = (SELECT MAX(연봉) FROM 직원);
📌 실행 결과:
3. 서브쿼리의 유형
서브쿼리 유형 | 설명 | 예제 |
스칼라 서브쿼리 |
하나의 값만 반환하는 서브쿼리 |
WHERE 컬럼 = (SELECT ...) |
단일 행 서브쿼리 |
한 행만 반환하는 서브쿼리 |
WHERE 컬럼 = (SELECT ...) |
다중 행 서브쿼리 |
여러 개의 값을 반환하는 서브쿼리 |
IN (SELECT ...) |
상관 서브쿼리 |
메인 쿼리의 각 행에 대해 개별적으로 실행되는 서브쿼리 |
EXISTS (SELECT ...) |
4. 서브쿼리 활용 예제
✅ 단일 행 서브쿼리
SELECT 이름, 부서
FROM 직원
WHERE 부서코드 = (SELECT 부서코드 FROM 부서 WHERE 부서명 = '영업');
📌 실행 결과:
✅ 다중 행 서브쿼리
SELECT 이름, 연봉
FROM 직원
WHERE 부서코드 IN (SELECT 부서코드 FROM 부서 WHERE 지역 = '서울');
📌 실행 결과:
✅ 상관 서브쿼리
SELECT 이름
FROM 직원 E
WHERE EXISTS (SELECT 1 FROM 부서 D WHERE E.부서코드 = D.부서코드 AND D.부서명 = '개발');
📌 실행 결과:
5. 서브쿼리 vs JOIN 비교
- ✔ 서브쿼리: 독립적인 쿼리를 중첩하여 사용 (가독성이 좋음)
- ✔ JOIN: 여러 테이블을 연결하여 성능이 우수함
✅ 동일한 작업을 JOIN으로 수행
SELECT E.이름, E.연봉
FROM 직원 E
JOIN 부서 D ON E.부서코드 = D.부서코드
WHERE D.부서명 = '영업';
🔍 결론
- ✔ 서브쿼리는 데이터를 계층적으로 조회할 때 유용
- ✔ 성능이 중요한 경우 JOIN이 더 빠를 수도 있음
- ✔ 다중 행을 반환할 경우
IN
또는 EXISTS
를 활용
📖 더 많은 SQL 개념도 함께 확인하세요!
👉 SQL 최적화 가이드 보러 가기