Tiny Star

📊DataBase/📈SQL

[🪪SQLD] 2과목 - SQL 활용 : Top N 쿼리(24년 개정 요약)

청크 2024. 2. 22. 12:10

· ROWNUM

   - Oracle DB의 SELECT문 결과에 대해 논리적인 일련번호를 부여

   - 조회되는 행 수를 제한할 때 많이 사용 (페이지 단위 출력은 인라인 뷰)

 

* 인라인 뷰 (Inline View)

   - 인라인 뷰는 SELECT문에서 FROM절에 사용되는 서브쿼리를 의미

SELECT * FROM        // MAIN QUERY

(SELECT * FROM EMP) a;  // SUBQUERY (INLINE VIEW)
* SQL Server의 TOP구문과 MySQL의 limit 구문
ex) 10명만 인출(Fetch) 하는 예제
     [SQL Server] : SELECT TOP(10) FROM EMP;
     [MySQL] : SELECT * FROM EMP LIMIT 10;

 

· ROWID

   - Oracle DB 내에서 데이터를 구분할 수 있는 유일한 값으로, 데이터가 어떤 데이터 파일, 어느 블록에 저장되어 있는지 확인 가능

 

· ROWID 구조

 1) 오브젝트 번호 (1~6) : 오브젝트 별로 유일한 값을 가짐

 2) 상대 파일 번호 (7~9) : 테이블스페이스에 속한 데이터 파일에 대한 상대파일번호

 3) 블록 번호 (10~15) : 데이터 파일 내부에서 어느 블록에 데이터가 존재하는지 알려줌

 4) 데이터 번호 (16~18) : 데이터 블록에 저장되어 있는 순서를 의미

 

· 계층형 조회 (CONNECT BY)

 -> Oracle DB에서 지원하는 것으로 계층형 데이터 조회가 가능

 

· 계층형 조회의 특징

 1) 트리 형태의 구조로 질의를 수행하여 위에서 아래로 탐색 (역방향 가능)

   - START WITH구 : 시작조건

   - CONNECT BY PRIOR : 조인 조건

 2) MAX (LEVEL)을 사용하여 최대 계층 수를 구할 수 있음 즉, 계층형 구조에서 마지막 Leaf Node의 계층 값을 구함

 

· CONNECT BY 키워드

 1) LEVEL : 검색 항목의 깊이를 의미, 계층 구조에서 가장 상위레벨은 1

 2) CONNECT_BY_ROOT : 계층 구조에서 가장 최상위 값을 표시

 3) CONNECT_BY_ISLEAF : 계층 구조에서 가장 최하위 값을 표시

 4) SYS_CONNECT_BY_PATH : 계층 구조의 전체 전개 경로 표시

 5) NOCYCLE : 순환 구조가 발생지점 까지만 전개

 6) CONNECT_BY_ISCYCLE : 순환 구조 발생 지점을 표시

 

· 계층형 조회

 1) START WITH 조건 : 계층 전개의 시작 위치를 지정

 2) PRIOR 자식 = 부모 : 부모에서 자식방향으로 검색을 수행, 순방향 전개

 3) PRIOR 부모 = 자식 : 자식에서 부모방향으로 검색을 수행, 역방향 전개

 4) NOCYCLE : 데이터 전개 시 조회된 데이터를 재조회하면 CYCLE  형성, 이 때 NOCYCLE은 사이클이 발생되지 않도록 함

 5) Order siblings by 칼럼명 : 동일 레벨 형제노드 사이에서 정렬 수행