조인
1)등가 교집합
(1)EQUI JOIN
-두개의 테이블 간에 일치하는 것을 조인
- "=" 을 사용해서 두개의 테이블을 연결
(2)INNER JOIN
-ON문을 사용하여 테이블 연결
(3)INTERSECT 연산
-두개의 테이블에서 교집합을 조회
2)NON-EQUI JOIN
-두개의 테이블간에 조인하는 경우 > , < , >= , <= 등을 사용
-정확하게 일치하지 않는 것을 조인
3)OUTER JOIN
-두 개의 테이블 간에 교집합을 조인하고 한쪽 테이블에만 있는 데이터도 포함시켜 조인
-LEFT JOIN: 왼쪽 테이블에만 있는 행도 포함하여 조회
-RIGHT JOIN: 오른쪽 테이블에만 있는 행 포함하여 조회
-FULL JOIN: LEFT JOIN 과 RIGHT JOIN 모두 포함하여 조회
4)CROSS JOIN
-조인 조건구 없이 2개의 테이블을 하나로 조인
-FROM 절에 CROSS JOIN구를 사용하면
5)UNION을 사용한 합집합 구현
(1)UNION
-두 개의 테이블을 하나로 만드는 연산
-두 개의 테이블의 칼럼 수, 데이터 형식 모두 일치해야한다.
(2)UNION ALL
-두 개의 테이블을 하나로 합치는 것
-UNION 처럼 중복을 제거하거나 정렬을 유발하지 않는다
6)차집합을 만드는 MINUS
-두 개의 테이블에서 차집합으 조회
-먼저 쓴 SELECT문에는 있고 뒤에 쓴 SELECT문에는 없는 집합 조회
계층형 조회
-계층형 조회는 ORACLE 데이터베이스에서 지원하는 것으로 계층형으로 데이터를 조회, 역방향 조회도 가능
| CONNECT BY 키워드 | |
| LEVEL | 검색 항목의 깊이 (가장 상위 레벨이 1) |
| CONNECT_BY_ROOT | 계층구조에서 가장 최상위 표시 |
| CONNECT_BY_ISLEAF | 계층구조에서 가장 최하위 표시 |
| SYS_ CONNECT_BY_PATH | 계층구조에서 전체 전개 경로 표시 |
| NOCYCLE | 순환구조가 발생지점까지만 전개 |
| CONNECT_BY_ISCYCLE | 순환구조 발생지점을 표시 |
| 계층형 조회 | |
| START WITH 조건 | 계층 전개의 시작위치 지정 |
| PRIOR 자식=부모 | 부모->자식 방향으로 검색을 수행 , 순방향 전개 |
| PRIOR 부모=자식 | 자식->부모 방향으로 검색을 수행, 역방향 전개 |
| NOCYCLE | 이미 조회된 데이터를 다시 조회되어 형성된 CYCLE 발생X |
| ORDER SIBILINGS BY 칼럼명 | 동일한 LEVEL인 형제노드 사이에서 정렬을 수행 |
서브쿼리
1)MAIN QUERY와 SUB QUERY
-SUB QUERY는 SELET문 내에 다시 SELET문을 사용하는 SQL문
-WHERE구에 SELET문 사용
-서브쿼리 밖에 있는 SELET문은 MAIN QUERY이다
2)단일 행 서브쿼리와 다중 행 서브쿼리
-서브쿼리가 반환하는 행의 개수에 따라 분류
(1)단일 행 서브쿼리
-서브쿼리 실행시 반드시 한 행만 조회
-비교 연산자 사용
(2)다중 행 서브쿼리
-서브쿼리 실행시 여러개의 행 결과 조회
-다중 행 비교 연산자인 IN,ANY,ALL,EXISTS를 사용
3)스칼라 SUBQUERY
-반드시 한 행과 한 컬럼만 반환하는 서브쿼리
4)연관 QURERY
-MAIN QUERY내의 커리를 사용
그룹 함수
1)ROLLUP
-GROUP BY 칼럼에 대해 SUBTOTAL을 만들어 준다
2)GROUPING 함수
-다른 그룹함수에서 생성되는 합계값을 구분하기 위해서 만들어진 함수
-소계 합계 등이 계산되면 1을 반환하고 그렇지 않으면 0을 반환
3)GROUPING SETS 함수
-GROUP BY에 나오는 칼럼의 순서와 관계없이 다양한 소계를 만들 수 있다.
4)CUBE함수
-CUBE함수에 제시한 칼럼에 대해 결합 가능한 모든 집계를 계산
-즉 조합할 수 있는 경우의 수가 모두 조합
윈도우 함수
-행과 행간의 관계를 정의하기 위해서 제공되는 함수
-순위,합계,평균,행위치등을 조작
-윈도우 함수 구조-
1.ARGUMENTS: 인수를 설정
2.PARTITION BY: 전체 집합을 기준에 의해 소그룹으로 나눈다.
3.ORDER BY: 어떤 항목에 대해 정렬
4.WINDOWING: 행기준의 범위 설정
1)순위 합수
-RANK: 동일한 순위는 동일한 값이 부여
-DENSE_RANK: 동일한 순위를 하나의 건수로 계산
-ROW_NUMBER: 동일한 순위에 대해 고유의 순위를 부여
2)집계 함수
-윈도우 함수를 제공
-SUM , AVG , COUNT , MAX , MIN
3)행 순서 관련 함수
-특정 위치의 행을 출력
-FIRST_VALUE: 파티션에서 가장 처음에 나오는 값을 구한다, MIN함수 결과와 동일
-LAST_VALUE: 파티션에서 가장 나중에 나오는 값을 구한다, MAX함수 결과와 동일
-LAG:이전 행을 가지고 온다.
-LEAD:특정 위치의 행을 가지고 온다 , 기본값은 1
4)비율 관련 함수
-백분율,파티션을 N분으로 분할한 결과 등을 조회
-CUME_DIST: 파티션 전체 건수에서 현재 행보다 작거나 같은 건수에 대한 누적 백분율 조회
-PERCENT_RANK
-NTILE: 파티션 별 전체 건수를 N등분한 결과를 조회
-RATIO_TO_PERORT
테이블 파티션
1)PARTITION
-파티션은 대용량 테이블을 여러개의 데이터 파일에 분리하여 저장
-입력,수정,조회 성능이 향상
2)RANGE PARTITION
-테이블 칼럼 중에서 값의 범위를 기준으로 여러 개의 파티션으로 데이터를 나누어 저장
3)LIST PARTITION
-특정 값을 기준으로 분할하는 방법
4)HASH PARTITION
-내부적으로 해시 함수를 사용하여 데이터를 분할
-데이터베이스 관리시스템이 알아서 분할하고 관리