오늘은 단순 용어적인 부분이 많다 ㅎ
계층형 질의
- 테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해 사용
SATRT WITH
CONNECT BY
PRIOR
- CONNECT BY 절에 사용되며, 현재 읽은 컬럼을 지정한다.
PRIOR 자식 = 부모 형태를 사용하면 계층구조에서 부모 데이터에서 자식 데이터(부모-> 자식) 방향으로 전개하는 순방향 전개를 한다. 반대는 역방향 전개
NOCYCLE
ORDER SIBLINGS BY
WHERE
- 모든 전개를 수행한 후에 지정된 조건을 만족하는 데이터만 추출한다.(필터링)
LEVEL : 루트 데이터이면 1, 그 하위 데이터면 2, 리 프 데이터까지 1씩 증가
CONNECT_BY_ISLEAF : 해당 데이터가 리프 데이터면 1, 그렇지 않으면 0
CONNECT_BY_ISCYCLE : 해당 데이터가 조상이면 1, 아니면 0 (CYCLE 옵션 사용 했을때만 사용 가능)
SYS_CONNECT_BY_PATH : 루트 데이터부터 현재 전개할 데이터까지의 경로를 표시한다. CONNECT_BY_ROOT : 현재 전개할 데이터의 루트 데이터를 표시한다. 단항 연산자이다.
셀프 조인
동일 테이블 사이의 조인, FROM 절에 동일 테이블이 2번 이상 나타난다. 반드시 테이블 별칭을 사용해야 함
서브쿼리
하나의 SQL문 안에 포함되어 있는 또다른 SQL문, 알려지지 않은 기준을 이용한 검색에 사용
🚨 서브쿼리 사용시 주의사항 🚨
- 서브쿼리를 괄호로 감싸서 사용한다.
- 서브쿼리는 단일 행 또는 복수 행 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하여야 하고 복수행 비교 연산자는 결과 건수와 상관없다.
- 서브쿼리에서는 ORDER BY를 사용하지 못한다!
- SELECT, FROM, WHERE, HAVING, ORDER BY, INSERT-VALUES, UPDATE-SET 절에 사용 가능