Database/SQL

[SQL] #08 SQL 서브쿼리 완전 정리, 중첩 쿼리의 개념과 예제까지

TOASTDEV 2025. 7. 30. 16:00
반응형

 

안녕하세요 토스트데브입니다. 
오늘은 SQL 기초 중에서도 헷갈리기 쉬운 서브쿼리(Subquery)와 중첩 쿼리(Nested Query)에 대해 쉽고 명확하게 정리해드리겠습니다.
데이터를 좀 더 유연하게 조회하고 싶다면 꼭 알아야 할 개념이에요!

 

 

🧐 서브쿼리란?

서브쿼리(Subquery)는 SQL문 안에 또 다른 SELECT 문을 포함시킨 것입니다.
말 그대로 “쿼리 안의 쿼리”, 즉 중첩 쿼리(Nested Query)라고도 불립니다.

 

✅ 서브쿼리 기본 구조

SELECT 컬럼
FROM 테이블
WHERE 컬럼 = (SELECT ... FROM ... WHERE ...);

 

🔍 서브쿼리 사용 예제

🎯 예제 1: 가장 높은 점수를 받은 학생 조회

SELECT name, score
FROM students
WHERE score = (SELECT MAX(score) FROM students);

➡ MAX(score)로 최고 점수를 구한 후, 그 값과 같은 학생을 조회합니다.

 

🎯 예제 2: 평균보다 높은 급여를 받는 사원 조회

SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

➡ 전체 평균 급여보다 높은 사람만 조회됩니다.

 

 

📦 서브쿼리 위치별 종류

위치 설명 예시
SELECT절 컬럼으로 사용 SELECT (SELECT COUNT(*) FROM ...)
FROM절 가상 테이블로 사용 SELECT * FROM (SELECT ...) AS temp
WHERE절 조건에 사용 WHERE id IN (SELECT ...)

 

 

🧩 단일행 vs 다중행 서브쿼리

유형 설명 연산자
단일행 결과가 1개 =, >, <, <= 등
다중행 결과가 여러 개 IN, ANY, ALL, EXISTS 등

 

🎯 예제 3: 특정 부서에서 일하는 사원 목록

SELECT name
FROM employees
WHERE dept_id IN (
    SELECT id FROM departments WHERE name = '기획팀'
);

➡ 기획팀이라는 부서의 ID를 먼저 찾고, 해당 부서에 소속된 사원들을 조회합니다.

 

 

⚠️ 서브쿼리 사용 시 주의점

  • 서브쿼리는 먼저 실행되고, 그 결과를 상위 쿼리가 활용합니다.
  • 결과가 여러 행일 수 있으므로 연산자 주의 (=, IN 혼용 금지)
  • 복잡한 서브쿼리는 JOIN이나 CTE(Common Table Expression)로 대체하는 것도 고려하세요.

 

📝 마무리

서브쿼리는 SQL의 강력한 기능 중 하나로,
단일 쿼리로는 할 수 없는 복잡한 조건과 비교를 가능하게 합니다.
데이터를 유연하게 조회하고 분석하는 데 필수 도구이니, 예제를 반복 연습해보며 꼭 익혀보세요!

 

#SQL #SQL기초 #서브쿼리 #중첩쿼리 #NestedQuery #Subquery #데이터분석 #SQL문법 #쿼리작성법 #DBMS #MySQL #SQL강의

 

반응형