본문 바로가기
Database/MySQL

[MySQL] 서브쿼리(Subquery)

by 더 이프 2023. 12. 7.
728x90

목차

    MySQL 서브쿼리(Subquery) 기법 이해하기: 데이터베이스 쿼리의 깊이 더하기 🌐

    안녕하세요! 오늘은 데이터베이스 관리와 쿼리 작성에 있어 중요한 개념 중 하나인 MySQL의 서브쿼리(Subquery) 기법에 대해 알아보겠습니다. 서브쿼리는 복잡한 데이터 집합을 다룰 때 유용하며, 데이터베이스 쿼리의 가능성을 확장시켜 줍니다. 이 블로그를 통해 서브쿼리의 개념을 이해하고 실제 사용 예시를 살펴봅시다.

    서브쿼리(Subquery)란?

    서브쿼리는 다른 SQL 쿼리 내에 포함된 쿼리입니다. 이는 하나의 SQL 문 안에서 여러 단계의 데이터 처리와 계산을 수행할 수 있게 해 주며, 복잡한 데이터 요구사항에 대응할 수 있도록 도와줍니다.

    서브쿼리의 특징

    • 내포된 쿼리: 메인 쿼리 안에 추가적인 쿼리가 내포됩니다.
    • 독립적 실행: 서브쿼리는 독립적으로 실행되며, 그 결과가 메인 쿼리에 사용됩니다.
    • 다양한 위치에서 사용: SELECT, FROM, WHERE 절 등 다양한 위치에서 서브쿼리를 사용할 수 있습니다.

     

    서브쿼리 사용 예시

    WHERE 절에서의 서브쿼리

     SELECT * FROM employees
     WHERE salary > (SELECT AVG(salary) FROM employees);
    • 이 쿼리는 전체 직원 중에서 평균 급여보다 많은 급여를 받는 직원들을 찾습니다.
    • 특정 조건을 만족하는 데이터를 필터링할 때 유용합니다.

     

    FROM 절에서의 서브쿼리

     SELECT AVG(temp.salary)
     FROM (SELECT salary FROM employees WHERE department = 'Sales') AS temp;
    • 이 쿼리는 'Sales' 부서 직원들의 평균 급여를 계산합니다.
    • 복잡한 데이터 집합을 임시 테이블처럼 사용할 때 유용합니다.

     

    SELECT 절에서의 서브쿼리

     SELECT employee_id, (SELECT COUNT(*) FROM orders WHERE orders.employee_id = employees.employee_id) AS order_count
     FROM employees;
    • 이 쿼리는 각 직원이 처리한 주문의 수를 보여줍니다.
    • 데이터의 계산이나 변환을 위해 사용됩니다.

     

    서브쿼리 활용 시 주의사항

    • 성능 저하: 복잡한 서브쿼리는 데이터베이스의 성능에 영향을 줄 수 있습니다.
    • 읽기 어려움: 너무 많은 중첩이나 복잡한 서브쿼리는 코드의 가독성을 저하시킬 수 있습니다.
    • 대안 고려: 때로는 조인(JOIN)이나 임시 테이블을 사용하는 것이 더 나은 성능을 제공할 수 있습니다.

     

    마무리하며...

    서브쿼리는 MySQL에서 강력한 데이터 처리 기능을 제공합니다. 올바르게 사용한다면 데이터 분석과 처리 작업을 보다 유연하고 효과적으로 할 수 있습니다. 하지만 복잡성과 성능 측면을 항상 고려하여 적절히 사용해야 합니다.


    Reference:

     

    MySQL :: MySQL Documentation

    Introducing Vector Store and Generative AI in MySQL HeatWave The vector store in MySQL HeatWave will enable customers to leverage the power of large language models (LLMs) to get answers that are more accurate than using models which have been trained on p

    dev.mysql.com