데이타베이스/MySQL

고급 SQL 쿼리: 서브쿼리와 파생 테이블의 활용

shimdh 2025. 5. 6. 09:25
728x90

고급 SQL 쿼리는 데이터베이스에서 복잡한 데이터를 효과적으로 조회하고 관리하는 데 필수적인 역할을 수행합니다. 이 중에서도 서브쿼리파생 테이블은 특히 데이터 조작과 분석에 있어 매우 유용한 도구로 자리 잡고 있습니다. 이 두 개념은 서로 다른 방식으로 데이터를 처리할 수 있으며, 특정 상황에 따라 적절하게 선택하여 사용할 수 있습니다.

서브쿼리란?

서브쿼리는 하나의 SQL 쿼리 내에 포함된 또 다른 SELECT 쿼리를 의미합니다. 주로 메인 쿼리에 대한 조건을 제공하거나, 특정 계산된 값을 가져오는 데 사용됩니다. 서브쿼리는 데이터베이스에서 복잡한 조건을 처리할 때 매우 유용하며, 이를 통해 보다 정교한 데이터 필터링이 가능합니다.

서브쿼리의 예제

  • 예제 1: 서브쿼리를 사용한 조건 필터링

    SELECT employee_id, name
    FROM employees
    WHERE department_id IN (SELECT department_id FROM departments WHERE location_id = '1000');

이 예제에서는 employees 테이블에서 특정 위치(location_id)에 있는 부서의 직원들을 선택합니다. 내부의 서브쿼리가 먼저 실행되어 해당 위치에 있는 부서의 ID를 반환하고, 그 결과를 바탕으로 외부 쿼리가 실행되어 최종적으로 해당 부서에 소속된 직원들의 ID와 이름을 조회합니다. 이처럼 서브쿼리는 복잡한 조건을 간결하게 표현할 수 있는 장점이 있습니다.

파생 테이블이란?

파생 테이블(또는 인라인 뷰)은 SELECT 문 안에서 정의되는 가상의 테이블로, 이를 통해 복잡한 데이터 집합을 생성하고 이를 기반으로 추가적인 연산이나 필터링을 수행할 수 있습니다. 파생 테이블은 특히 여러 테이블 간의 조인이나 집계 작업을 수행할 때 유용하게 사용됩니다.

파생 테이블의 예제

  • 예제 2: 파생 테이블을 통한 집계
SELECT dept.department_name, avg_salaries.avg_salary
FROM departments AS dept
JOIN (
    SELECT department_id, AVG(salary) AS avg_salary 
    FROM employees 
    GROUP BY department_id
) AS avg_salaries ON dept.department_id = avg_salaries.department_id;

위의 예제에서는 각 부서별 평균 급여를 계산하기 위해 파생 테이블 avg_salaries를 생성했습니다. 이 파생 테이블은 employees 테이블에서 부서 ID별로 평균 급여를 구해 저장합니다. 이후 외부 쿼리는 이 정보를 이용하여 각 부서의 이름과 평균 급여를 함께 보여줍니다. 파생 테이블을 사용함으로써 복잡한 쿼리를 보다 명확하게 구성할 수 있으며, 가독성을 높이는 데 기여합니다.

서브쿼리 vs 파생 테이블

서브쿼리와 파생 테이블은 각각의 장단점이 있으며, 상황에 따라 적절하게 선택하여 사용할 필요가 있습니다.

  1. 유연성:

    • 서브쿼리는 다양한 형태로 사용할 수 있어 유연성이 높습니다. 복잡한 조건을 처리할 때 특히 유용합니다.
  2. 가독성:

    • 파생 테이블은 코드가 더 명확해지고 가독성이 높아지는 장점이 있습니다. 복잡한 데이터 집합을 쉽게 이해할 수 있도록 도와줍니다.
  3. 성능:

    • 경우에 따라 성능 차이가 있을 수 있으며, 일반적으로 단순한 작업에는 서브쿼리가 더 효율적일 수 있지만 대규모 데이터 처리 시에는 파생 테이블이 더 나은 성능을 보일 수도 있습니다. 따라서 상황에 맞는 선택이 중요합니다.

결론

고급 SQL 쿼리에 있어서 서브쿼리와 파생 테이블은 각각 강력한 도구로, 데이터 분석 및 보고서를 작성하는 데 큰 도움이 됩니다. 이 두 가지 기술을 상황에 맞게 적절히 활용하면 더욱 복잡하고 유용한 데이터를 효과적으로 추출할 수 있습니다. 데이터베이스를 다루는 데 있어 이러한 기법들은 필수적인 요소로, 데이터의 가치를 극대화하는 데 기여할 것입니다.

728x90