✔ 계층형 질의와 셀프 조인
계층형 질의란
- 테이블에서 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용
- SQL Server에서의 계층형 질의문은 CTE(Common Table Expression)를 재귀 호출함으로써 계층 구조를 전개
- SQL Server에서의 계층형 질의문은 앵커 멤버를 실행하여 기본 결과 집합을 만들고 이후 재귀 멤버를 지속적으로 실행
- 오라클의 계층형 질의문에서 WHERE 절은 모든 전개를 진행한 후 필터 조건으로 조건을 만족하는 데이터만을 추출하는데 활용
계층형 데이터란
- 동일한 테이블에 계층적으로 상위와 하위 데이터가 포함된 테이블
- 예) 사원 테이블에서 상위 사원과 하위 사원 관계
PRIOR
- CONNECT BY 절에 사용되며 현재 읽은 칼럼을 지정
- 그 외에도 SELECT, WHERE 절에서도 사용할 수 있음
- PRIOR 하위 = 상위 형태로 사용하면 계층 구조에서 상위(부모) 데이터에서 하위(자식) 데이터 방향으로 순방향 전개
- PRIOR 상위 = 하위 형태로 사용하면 계층 구조에서 하위(자식) 데이터에서 상위(부모) 데이터 방향으로 역방향 전개
START WITH
- 계층 구조 전개의 시작 위치를 지정하는 구문
- 필터링된 시작 데이터는 결과목록에 포함되어지게 되며 이후 CONNECT BY 절에 의해 필터링
- 루트 데이터를 지정
- 루트 노드의 LEVEL 값은 1이며 리프 데이터까지 1씩 증가
ORDER SIBILINGS BY
- 형제 노드(동일 LEVEL) 사이에서 정렬을 수행
SELECT 속성명1, 속성명2, …
FROM 테이블명
START WITH 속성명
CONNECT BY PRIOR 속성명1 = 속성명2
ORDER SIBLINGS BY 속성명 [ASC | DESC];
셀프 조인이란
- 동일 테이블 사이의 조인
- 한 테이블 내에서 두 칼럼이 연관 관계가 있을 경우 수행
- FROM 절에 동일 테이블이 두 번 이상 나타남
- 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 동일하기 때문에 식별을 위해 반드시 ALIAS를 사용
// SELF JOIN
SELECT [별칭1.]속성명, [별칭2.]속성명, …
FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2
ON 별칭1.속성명 = 별칭2.속성명;
SELECT [별칭1.]속성명, [별칭1.]속성명, …
FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2
WHERE 별칭1.속성명 = 별칭2.속성명;
'Certificate > SQL개발자' 카테고리의 다른 글
[SQL개발자] SQL 활용 - 그룹 함수 (0) | 2023.10.20 |
---|---|
[SQL개발자] SQL 활용 - 서브쿼리 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 집합 연산자 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 표준 조인 (0) | 2023.10.20 |
[SQL개발자] SQL 기본 - TCL (0) | 2023.10.19 |
✔ 계층형 질의와 셀프 조인
계층형 질의란
- 테이블에서 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용
- SQL Server에서의 계층형 질의문은 CTE(Common Table Expression)를 재귀 호출함으로써 계층 구조를 전개
- SQL Server에서의 계층형 질의문은 앵커 멤버를 실행하여 기본 결과 집합을 만들고 이후 재귀 멤버를 지속적으로 실행
- 오라클의 계층형 질의문에서 WHERE 절은 모든 전개를 진행한 후 필터 조건으로 조건을 만족하는 데이터만을 추출하는데 활용
계층형 데이터란
- 동일한 테이블에 계층적으로 상위와 하위 데이터가 포함된 테이블
- 예) 사원 테이블에서 상위 사원과 하위 사원 관계
PRIOR
- CONNECT BY 절에 사용되며 현재 읽은 칼럼을 지정
- 그 외에도 SELECT, WHERE 절에서도 사용할 수 있음
- PRIOR 하위 = 상위 형태로 사용하면 계층 구조에서 상위(부모) 데이터에서 하위(자식) 데이터 방향으로 순방향 전개
- PRIOR 상위 = 하위 형태로 사용하면 계층 구조에서 하위(자식) 데이터에서 상위(부모) 데이터 방향으로 역방향 전개
START WITH
- 계층 구조 전개의 시작 위치를 지정하는 구문
- 필터링된 시작 데이터는 결과목록에 포함되어지게 되며 이후 CONNECT BY 절에 의해 필터링
- 루트 데이터를 지정
- 루트 노드의 LEVEL 값은 1이며 리프 데이터까지 1씩 증가
ORDER SIBILINGS BY
- 형제 노드(동일 LEVEL) 사이에서 정렬을 수행
SELECT 속성명1, 속성명2, …
FROM 테이블명
START WITH 속성명
CONNECT BY PRIOR 속성명1 = 속성명2
ORDER SIBLINGS BY 속성명 [ASC | DESC];
셀프 조인이란
- 동일 테이블 사이의 조인
- 한 테이블 내에서 두 칼럼이 연관 관계가 있을 경우 수행
- FROM 절에 동일 테이블이 두 번 이상 나타남
- 동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 동일하기 때문에 식별을 위해 반드시 ALIAS를 사용
// SELF JOIN
SELECT [별칭1.]속성명, [별칭2.]속성명, …
FROM 테이블명1 [AS] 별칭1 JOIN 테이블명1 [AS] 별칭2
ON 별칭1.속성명 = 별칭2.속성명;
SELECT [별칭1.]속성명, [별칭1.]속성명, …
FROM 테이블명1 [AS] 별칭1, 테이블명1 [AS] 별칭2
WHERE 별칭1.속성명 = 별칭2.속성명;
'Certificate > SQL개발자' 카테고리의 다른 글
[SQL개발자] SQL 활용 - 그룹 함수 (0) | 2023.10.20 |
---|---|
[SQL개발자] SQL 활용 - 서브쿼리 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 집합 연산자 (0) | 2023.10.20 |
[SQL개발자] SQL 활용 - 표준 조인 (0) | 2023.10.20 |
[SQL개발자] SQL 기본 - TCL (0) | 2023.10.19 |