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

2025. 7. 30. 16:00·Database/SQL
반응형

 

안녕하세요 토스트데브입니다. 
오늘은 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
'Database/SQL' 카테고리의 다른 글
  • [SQL] #07 SQL JOIN 완전 정복! INNER부터 LEFT, RIGHT까지 한눈에
  • [SQL] #06 SQL 데이터 삽입(INSERT), 수정(UPDATE), 삭제(DELETE)
  • [SQL] #05 SQL 집계 함수(count, sum, avg, max, min)와 Group by
  • [SQL] #04 SQL 조건문 완벽정리! WHERE, AND, OR, NOT 쉽게 배우기!
TOASTDEV
TOASTDEV
인스턴트 코딩 #토스트데브 #토스트뎁 #코딩공부 #개발입문
  • TOASTDEV
    토스트뎁
    TOASTDEV
    • 분류 전체보기 (60) N
      • 알쓸신잡 (20)
        • 코딩에 대하여 (13)
        • 컴퓨터에 대하여 (5)
        • IT 국내외 소식 (2)
      • Web Front (6)
        • HTML (6)
        • CSS (0)
        • JavaScript (0)
      • Programming (15)
        • PHP (15)
      • Database (8) N
        • SQL (8) N
        • MySQL (0)
      • Server (11) N
        • Linux (11) N
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Youtube Toastdev
    • Naver Blog
  • 공지사항

    • [유튜브] 유튜브 영상 업로드 안내
  • 인기 글

  • 태그

    데이터분석
    서버입문
    php
    php코딩
    우분투서버
    html기초
    웹프로그래밍
    SQL기초
    SQL강의
    HTML
    데이터베이스
    ict
    php문법
    sql
    코딩기초
    웹개발
    프론트엔드
    서버관리
    웹개발기초
    코딩입문
    웹개발입문
    ubuntuserver
    php기초
    리눅스서버
    SQL문법
    리눅스기초
    ubuntu서버
    php입문
    dbms
    코딩공부
  • 최근 댓글

  • 최근 글

  • 전체
    오늘
    어제
  • 반응형
  • hELLO· Designed By정상우.v4.10.3
TOASTDEV
[SQL] #08 SQL 서브쿼리 완전 정리, 중첩 쿼리의 개념과 예제까지
상단으로

티스토리툴바