데이터베이스에서의 계층 구조 검색을 위한 SQL 쿼리 연습

많은 데이터베이스 시스템에서는 계층 구조(Hierarchical Structure)를 표현하기 위한 데이터를 저장할 수 있는 기능을 제공합니다. 이러한 계층 구조는 트리(Tree)와 비슷한 형태로 데이터를 구성하며, 예를 들어 조직도, 제품 카테고리 등에 활용될 수 있습니다.

이 글에서는 데이터베이스에서 계층 구조 검색을 위해 사용되는 일반적인 SQL 쿼리들을 연습해보겠습니다. 이 연습을 위해서, 조직 구조를 표현하는 Employees 테이블을 사용하겠습니다. 이 테이블은 다음과 같은 칼럼들을 가지고 있을 것입니다:

모든 하위 직원 검색

특정 직원의 모든 하위 직원을 검색하기 위해서는 recursive joindepth first search의 개념을 활용할 수 있습니다. 다음은 모든 하위 직원을 검색하기 위한 SQL 쿼리의 예제입니다:

WITH RECURSIVE Subordinates AS (
  SELECT employee_id, name
  FROM Employees
  WHERE employee_id = {직원 ID}
  UNION ALL
  SELECT e.employee_id, e.name
  FROM Employees e
  JOIN Subordinates s ON s.employee_id = e.manager_id
)
SELECT employee_id, name
FROM Subordinates;

위 쿼리에서, Employees 테이블에서 최상위 직원을 선택하고, UNION ALL을 사용하여 하위 직원을 반복적으로 연결합니다. WITH RECURSIVE를 사용하면 재귀적인 쿼리를 실행할 수 있습니다. 결과적으로, 특정 직원의 모든 하위 직원을 검색할 수 있습니다.

트리 구조로 검색

데이터베이스에서 저장된 계층 구조를 트리 형태로 검색하기 위해서는 CONNECT BY 구문을 사용할 수 있습니다. 다음은 트리 구조로 검색하는 SQL 쿼리의 예제입니다:

SELECT employee_id, name
FROM Employees
START WITH employee_id = {직원 ID}
CONNECT BY PRIOR employee_id = manager_id;

위 쿼리에서는 START WITH 절을 사용하여 최상위 직원을 선택하고, CONNECT BY 절을 사용하여 계층 구조를 구성합니다. PRIOR 키워드를 사용하여 부모-자식 관계를 표현합니다. 결과적으로, 특정 직원을 포함한 하위 직원들의 트리 구조를 검색할 수 있습니다.

마치며

이 연습을 통해 데이터베이스에서의 계층 구조 검색을 위한 SQL 쿼리들을 학습했습니다. 계층 구조를 가진 데이터를 효율적으로 검색하고 다루는 것은 많은 애플리케이션에서 필요한 기능입니다. 이러한 SQL 쿼리를 활용하여 계층 구조를 다룰 수 있게 되었다면, 데이터베이스 시스템을 더욱 효과적으로 활용할 수 있을 것입니다.

참고자료

#데이터베이스 #SQL