일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- JSP/Servlet
- 데이터입출력구현
- 머신러닝
- SQL
- 텍스트마이닝
- 중학1-1
- 파이썬라이브러리
- 운영체제
- C++
- CSS
- 연습문제
- 정수와유리수
- 데이터베이스
- 코딩테스트
- 자바 실습
- 파이썬
- numpy/pandas
- 영어공부
- 정보처리기사필기
- 정보처리기사실기
- pandas
- 컴퓨터비전
- 자바
- 혼공머신
- html/css
- CNN
- 딥러닝
- 데이터분석
- 컴퓨터구조
- 중학수학
- Today
- Total
클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지
집합 연산자와 계층형 질의 7 - 계층형 질의 2 : SQL Server/ MariaDB 본문
이번에는 SQL Server와 MariaDB의 계층형 질의에 대해서 학습해보려고 한다.
이론 6 - 계층형 질의 2 : SQL Server/ MariaDB
왼쪽이 member 테이블인데 어떤 결과값에 의해 계층형 질의가 생기고, 계층형 질의를 통해 레벨값을 추출한다. 가운데 쿼리가 마리아 DB에서 사용하는 계층형 질의이다. AS 안에 있는 쿼리는 CTE를 통해 재귀호출을 하겠다는 뜻이다.
이 안에 재귀호출되는 쿼리가 어떻게 동작하는지 이해하면 좋다.
manager_id가 NULL인 즉 최상위 데이터를 찾겠다는 뜻이다. 최상위 데이터의 레벨값을 0으로 설정했다.
비어있는 것과 UNION ALL을 조인해서 CTE 테이블에 넣는다. 첫번째 순환을 해서 나오는 값이 이렇게 된다.
0에서 1을 더해서 1이 된다.
네 번의 순환을 통해 이 값들이 만들어졌다.
실습 10 - 계층형 질의
1. member 테이블 살펴보기
member 테이블에는 member_id와 manager_id가 있음을 볼 수 있다.
2. 계층형 질의 작성하기
계층형 질의 구문을 작성해준다. 처음에는 CTE 테이블에 아무런 값이 없다가 SELECT 문을 통해 최상위 하나의 데이터를 추출하게 된다. 즉 manager_id가 null인 값을 갖는다. 가져온 member_id와 manager_id를 출력하고 레벨값을 1 추가한다.
이제 순환을 통해 만들어진 값에 SELECT 문을 작성한다.
정말 어려운 문제였다. 아직도 구문이 이해가 잘 되지 않기도 하다.
퀴즈 7 - 계층형 질의 3
학습을 마치고
이번 단원은 솔직히 정말 어려웠다. 계층형 질의는 실무에서 그렇게 많이 사용되는 내용이 아니니 그냥 이런 게 있구나 하고 가볍게 넘어가기로 했다. 어제 이 공부를 진행하다가 과연 이렇게 어려운 수준의 공부를 하는 게 의미가 있을까 하는 약간의 회의가 들기도 했었다.
하지만 이 부분만 어렵고 나머지는 충분히 공부할만했다. 가끔은 이해가 되지 않더라도 그냥 끝까지 가야 할 경우가 있다. 정상까지 다 간 다음에 이후에 이해되는 경우도 있는 것이다.
'알고리즘 및 자료 관리 > SQL' 카테고리의 다른 글
JOIN 심화 1 - JOIN에 대하여 (0) | 2024.10.22 |
---|---|
집합 연산자와 계층형 질의 8 - 미션 문제 풀기 및 단원 마무리하기 (0) | 2024.10.22 |
집합 연산자와 계층형 질의 6 - 계층형 질의 1 : Oracle (0) | 2024.10.22 |
집합 연산자와 계층형 질의 5 - 집합 연산자 개념 4 : EXCEPT (0) | 2024.10.22 |
집합 연산자와 계층형 질의 4 - 집합 연산자의 개념 3 : INTERSECT (0) | 2024.10.22 |