서브쿼리

기술노트
Admin (토론 | 기여)님의 2025년 9월 6일 (토) 05:53 판 (Gemini 벌크 업로더로 자동 업로드)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

🧩 서브쿼리 (Subquery)

서브쿼리는 SQL 쿼리문 안에 또 다른 `SELECT` 문이 중첩되어 있는 형태의 쿼리입니다. 메인 쿼리의 일부로 사용되어, 메인 쿼리에 필요한 데이터를 제공하는 역할을 합니다.

서브쿼리는 괄호 `()`로 묶어서 사용하며, 메인 쿼리가 실행되기 전에 먼저 실행되어 그 결과를 메인 쿼리에 전달합니다.


⚙️ 서브쿼리의 사용 위치

서브쿼리는 SQL 쿼리문의 다양한 절에서 사용될 수 있습니다.

  • `SELECT` 절 : 스칼라 서브쿼리(단일 값 반환)로 사용되어, 각 행에 대한 추가적인 정보를 조회합니다.
   ```sql
   SELECT name, (SELECT COUNT(*) FROM Orders WHERE Orders.CustomerID = Customers.CustomerID) AS OrderCount
   FROM Customers;
   ```
  • `FROM` 절 : 인라인 뷰(Inline View)라고도 불리며, 서브쿼리의 결과가 마치 하나의 테이블처럼 사용됩니다.
   ```sql
   SELECT T1.name, T2.total_sales
   FROM Customers T1 JOIN (SELECT CustomerID, SUM(Amount) AS total_sales FROM Orders GROUP BY CustomerID) T2
   ON T1.CustomerID = T2.CustomerID;
   ```
  • `WHERE` 절 : 특정 조건을 만족하는 데이터를 필터링하는 데 사용됩니다. `IN`, `EXISTS`, 비교 연산자 등과 함께 사용됩니다.
   ```sql
   SELECT * FROM Products WHERE Price > (SELECT AVG(Price) FROM Products);
   ```
  • `HAVING` 절 : 그룹에 대한 조건을 지정할 때 사용됩니다.

📚 서브쿼리의 종류

  • 스칼라 서브쿼리 : 단일 행, 단일 열의 값을 반환합니다. `SELECT` 절이나 `WHERE` 절에서 사용됩니다.
  • 단일 행 서브쿼리 : 단일 행, 여러 열의 값을 반환합니다. `WHERE` 절에서 비교 연산자(=, >, < 등)와 함께 사용됩니다.
  • 다중 행 서브쿼리 : 여러 행, 단일 열의 값을 반환합니다. `WHERE` 절에서 `IN`, `ANY`, `ALL` 등과 함께 사용됩니다.
  • 다중 열 서브쿼리 : 여러 행, 여러 열의 값을 반환합니다. `FROM` 절에서 주로 사용됩니다.
  • 상관 서브쿼리 (Correlated Subquery) : 메인 쿼리의 컬럼 값을 서브쿼리에서 사용하는 형태입니다. 메인 쿼리의 각 행마다 서브쿼리가 다시 실행됩니다.

💡 정보처리기사 핵심 Point

  • 서브쿼리는 복잡한 데이터를 한 번의 쿼리로 조회할 수 있게 해주는 강력한 기능입니다.
  • 정보처리기사 시험에서는 서브쿼리의 개념, 사용 위치, 그리고 각 종류별 특징을 묻는 문제가 자주 출제됩니다.
  • 특히 `WHERE` 절에서 `IN`, `EXISTS`와 함께 사용되는 서브쿼리의 동작 방식을 정확히 이해해야 합니다.
  • 서브쿼리를 과도하게 사용하면 성능 저하의 원인이 될 수 있으므로, 경우에 따라서는 `JOIN`으로 대체하는 것을 고려해야 합니다.