반응형
표준조인
- 여러 RDBMS마다 SQL문법 차이가 있을 경우 호환성 문제 발생
- 즉 어떤 DRBMS에서도 작동하는 JOIN
INNER JOIN
- JOIN 조건에 충족하는 데이터만 출력되는 방식
- JOIN 조건을 OR 절을 사용하여 작성
위 표를 INNER JOIN할 경우
OUTER JOIN
- JOIN 조건에 충족하지 않아도 출력될 수 있는 방식
// 기본 조건
SELECT * FROM A1, A2
WHERE A1.COL1 = A2.COL1
- LEFT OUTER JOIN
- SQL에서 왼쪽에 표기된 테이블의 데이터가 무조건 출력되는 조인
- JOIN 데이터가 없는 경우 NULL 출력
SELECT * FROM A1 LEFT OUTER JOIN A2
ON A1.COL1 = A2.COL1
- RIGHT OUTER JOIN
- SQL에서 오른쪽에 표기된 테이블의 데이터가 무조건 출력되는 조인
- JOIN 데이터가 없는 경우 NULL 출력
SELECT * FROM A1 RIGHT OUTER JOIN A2
ON A1.COL1 = A2.COL1
- FULL OUTER JOIN
- LEFT와 RIGHT OUTER JOIN의 중복을 제외한 합집합이 출력되는 조인
SELECT * FROM A1 FULL OUTER JOIN A2
ON A1.COL1 = A2.COL1
NATURAL JOIN
A 테이블과 B테이블에서 같은 이름을 가진 칼럼들이 모두 동일한 데이터를 가질 때 JOIN되는 방식
CROSS JOIN
A테이블과 B테이블 사이에 JOIN 조건이 없을 경우, 조합할 수 있는 모든 경우를 출력하는 방식
SORT MERGE JOIN
테이블을 정렬한 후에 테이블을 병합하면서 조인을 실행
집합연산자
각 쿼리의 결과 집합을 가지고 연산하는 명령어
- UNION ALL : 각 쿼리의 결과 집합의 합집합 (중복 행 그대로 출력)
- UNION : 각 쿼리의 결과 집합의 합집합 (중복 행 한 줄로 출력)
- INTERSECT : 각 쿼리의 결과 집합의 교집합 (중복 행 한줄로 출력)
- MINUS/EXCEPT : (앞 쿼리 결과 집합 - 뒤 쿼리 결과 집합)한 차집합 ( 중복 행 한줄로 출력)
서브쿼리
하나의 쿼리 안에 존재하는 또 다른 쿼리
- SELECT 절에 위치 시 : 스칼라 서브쿼리
- 주로 SELECT 절에 위치하지만 컬럼이 올 수 이는 대부분 위치에서 사용
- FROM 절에 위치 시 : 인라인 뷰
- FROM 절 등 테이블명이 올 수 있는 위치에 사용
- WHERE 절, HAVING 절에 위치 시 : 중첩 서브쿼리
- 비연관 서브쿼리 : 메인 쿼리와 관계를 맺고 있지 않음
- 연관 서브쿼리 : 메인 쿼리와 관계를 맺고 있음
뷰
- 특정 SELECT 문에 이름을 붙여 재사용이 가능하도록 저장해놓은 오브젝트
- 보안성, 독립성, 편리성의 특징
그룹 함수
- 집계 함수 : COUNT, SUM, AVG, MAX, MIN
- 총계 함수
ROLLUP : 전체 합계와 소그룹 간의 소계를 계산하는 함수
SELECT ID, 월, SUM(금액) AS 금액
FROM 매출
GROUP BY ROLLUP(ID, 월)
// ID별 합계, 전체 합계를 조회
CUBE : 다차원적인 소계를 계산. ROLLUP과 달리 GROUB BY 절에 명시한 모든 칼럼에 대해 소그룹 합계를 계산
SELECT ID, 월, SUM(금액) AS 금액
FROM 매출
GROUP BY CUBE(ID, 월)
// 전체 합계, 월별 합계, ID별 합계를 조회
GROUOING SETS : 특정 항목에 대한 소계를 계산하는 함수
SELECT ID, 월, SUM(금액) AS 금액
FROM 매출
GROUP BY GROUPING SETS(ID, 월)
// ID별 합계, 월별 합계를 조회
// GROUP BY GROUPING SETS (A, B, (A, B), ());
// 위 형태의 경우 A(A)와 B(B)별 합계, A와 B에 대한 전체(A,B) 합계, 전체() 합계 생성
윈도우 함수
- 순위 함수 : 순위를 기준으로 오름차순 혹은 내림차순으로 출력시 ORDER BY 사용
- RANK : 중복값은 중복 등수로 적용, 중복된 등수는 건너뜀(1위, 1위, 3위, 4위...)
- DENSE_RANK : 중복값은 중복 등수로 적용, 중복된 등수를 건너뛰지 않음 (1위, 1위, 2위, 3위 ...)
- ROW_NUMBER : 중복값에 상관 없이 고유 등수 부여 (1위, 2위, 3위, 4위...)
- 집계 함수 : SUM, MAX, MIN, AVG, COUNT
- 행 순서 함수 : FIRST_VALUE, LAST_VALUE, LAG, LEAD
- 비율 함수 : CUME_DIST, PERCENT_RANK, NTILE, RATIO_TO_REPORT
기타
- UNION ALL : 합집합 반환
- MINUS : 차집합 반환
- CONNECT BY : 계층형 구조를 탐색하는 질의
SELECT 칼럼, LEVEL AS 계층 깊이
FROM 테이블
START WTIH 시작 위치 조건
CONNECT BY PRIOR 하위코드 = 상위코드
// 정렬시 계층형 구조까지 보존하려면 ORDER SIBLINGS BY 절 사용
// ORDER SIBLINGS BY 절을 사용하면 현재 노드의 형제 노드 사이에서 정렬을 수행 (테이블 X)
// MO CYCLE 옵션 사용시 중복 경로 발생시 쿼리 종료
반응형
'자격증 > SQLD' 카테고리의 다른 글
SQLD 정리 - 2과목 SQL 기본 PART 2 (0) | 2023.03.14 |
---|---|
SQLD 정리 - 2과목 SQL 기본 PART 1 (0) | 2023.03.13 |
SQLD 정리 - 1과목 데이터 모델링과 성능 정리 (0) | 2023.03.12 |
SQLD 정리 - 1과목 데이터 모델링의 이해 정리 (0) | 2023.03.12 |
댓글