티스토리 뷰
not exists
exist: 결괏값이 하나라도 존재하면 True, 아니면 false.
▷exist에 not을 붙여주면 exist값에 반대 결과가 나온다.
집합 연산자 종류
▷Union: 합집합, 모든 중복된 행은 하나로 만든다.
▷Union All: 합집합, 중복된 행도 그대로 출력(칼럼 Alias는 첫 번째 SQL모듈 기준으로 된다).
▷Intersect: 교집합, 중복된 행은 하나의 행으로 만든다.
▷Except: 앞의 SQL문의 결과에서 뒤의 결과에 대한 차집합.
Prior
▷Connect By절에 사용되며 현재 읽은 칼럼을 지정한다.
▷Prior자식=부모: 부모->자식의 순방향
▷Prior부모=자식: 자식->부모의 역방향
NOCYCLE
▷동일한 데이터가 전개 되면 그 이후로 실행 X
계층형 질의문
▷CTE(Common Table Expression)를 재귀 호출함으로써 상위부터 하위 방향 전개)
▷Ex)
WITH 테이블명_ANCHOR AS
( SELECT 하위 칼럼명, 칼럼명, 상위 칼럼명, 0 AS LEVEL
FROM 테이블명
WHERE 상위칼럼명 IS NULL /* 재귀 호출의 시작점 */
UNION ALL
SELECT R. 칼럼명, R.칼럼명, R. 계층 칼럼명, A.LEVEL + 1
FROM 테이블명_ANCHOR A, 테이블명 R
WHERE A. 하위 칼럼 = R. 상위 칼럼 )
WITH 절의 CTE 쿼리를 보면 UNION 연산자로 쿼리 두 개를 결합.
위의 쿼리를 앵커 멤버, 아래의 쿼리를 재귀 멤버라고 함.
재귀적 쿼리의 처리 과정
▷ CTE 식을 앵커 멤버와 재귀 멤버로 분할
▷ 앵커 멤버를 실행하여 첫 번째 호출 또는 기본 결과 집합 T(0) 생성
▷ T(i)는 입력으로 사용하고 T(i)+1은 출력으로 사용하여 재귀 멤버 실행
▷빈 집합이 반환될 때까지 3단계 반복 5. 결과 집합을 반환. T(0)에서 T(n)까지의 UNION ALL
셀프 조인(SELF JOIN)
▷동일 테이블 사이의 조인을 말한다. 따라서 From 절에 동일 테이블이 두 번 이상 나타난다.
▷동일 테이블 사이의 조인을 수행하면 테이블과 칼럼 이름이 모두 동일하기 때문에 식별을 위해 반드시 테이블 별칭(Alias)을 사용해야 한다.
▷Ex)
SELECT ALIAS명 1. 칼럼명 1, ALIAS명 2. 칼럼명 1,....
FROM 테이블명 ALIAS명 1, 테이블명 ALIAS명 2
WHERE ALIAS명 1. 칼럼명 2 = ALIAS명 2. 칼럼명 1
Window Function
▷행과 행 간의 관계를 쉽게 정의하기 위해 만든 함수
서브 쿼리
▷단일 행 서브 쿼리: 서브 쿼리의 실행 결과가 항상 1건 이하인 서브 쿼리(=,<, <=,>,>=,<>)
▷다중 행 서브 쿼리: 서브 쿼리의 실행 결과가 여러 건인 서브 쿼리(IN, ALL, ANY, SOME, EXISTS)
▷다중 칼럼 서브 쿼리: 서브쿼리의 실행 결과로 여러 컬럼을 반환한다. 메인쿼리의 조건절에 여러 칼럼을 동시에 비교할 수 있다. 메인쿼리에서 비교하고자 하는 칼럼 개수와 칼럼의 위치가 동일해야 한다.
동작 방식에 따른 서브쿼리 분류
비연관 서브 쿼리: 서브 쿼리가 메인 쿼리 칼럼을 갖고 있지 않은 형태. 메인쿼리에 값을 제공하기 위한 목적으로 주로 사용.
연관 서브쿼리: 서브쿼리가 메인쿼리 칼럼을 가지고 있는 형태. 일반적으로 메인 쿼리가 먼저 수행되어 읽힌 데이터를 서브 쿼리에서 조건이 맞는지 확인하고자 할 때 주로 사용.
'DB > SQLD' 카테고리의 다른 글
SQLD정리 노트#3 (0) | 2020.09.02 |
---|---|
SQLD정리 노트#2 (0) | 2020.09.01 |