반응형
안녕하세요 토스트데브입니다.
오늘은 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강의
반응형
'Database > SQL' 카테고리의 다른 글
[SQL] #07 SQL JOIN 완전 정복! INNER부터 LEFT, RIGHT까지 한눈에 (0) | 2025.07.29 |
---|---|
[SQL] #06 SQL 데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE) (0) | 2025.07.28 |
[SQL] #05 SQL 집계 함수(count, sum, avg, max, min)와 Group by (1) | 2025.07.27 |
[SQL] #04 SQL 조건문 완벽정리! WHERE, AND, OR, NOT 쉽게 배우기! (0) | 2025.07.18 |
[SQL] #03 SELCT 문 완벽 정리! 데이터 조회의 모든 것! (0) | 2025.07.17 |