집합 연산자 | 의미 |
---|---|
UNION | 여러 개의 SQL문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다. |
UNION ALL | 어러개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시된다. 일반적으로 여러 질의 결과가 상호 배타적인 일 때 많이 사용한다. 개별 SQL 문의 결과가 서로 중복되지 않는 경우 UNION과 결과가 동일하다. |
INTERSECT | 여러 개의 SQL 문의 결과에 대한 교집합이다. 중복된 행은 하나의 행으로 만든다. |
EXCEPT | 앞의 SQL문의 결과에서 뒤의 SQL 문의 결과에 대한 차집합이다. 중복된 행은 하나의 행으로 만든다. |
기본 식
SELECT 칼럼명1, 칼럼명2….
FROM 테이블 명
[WHERE 조건식]
[
[GROUP BY 칼럼이나 표현식
HAVING 그룹 조건식] ]
집합 연산자
SELECT 칼럼명1, 칼럼명2….
FROM 테이블 명
[WHERE 조건식]
[
[GROUP BY 칼럼이나 표현식 HAVING 그룹 조건식] ]
[ORDER BY 1,2 [ ASC or DESC] ]
일반 집합 연산자를 SQL과 비교
PRIOR : XONNECT BY절에 사용되며 현재 읽은 칼럼을 지정한다.
START WHITH 절은 계층 구조 전개의 시작위치를 지정하는 구문이다. 루트 데이터를 지정
ORDER SIBLINGS BY : 형제 노드 사이에서 정렬 수행
테이블에 계층형 데이터가 존재하는 경우 데이터를 조회하기 위해서 계층형 질의를 사용한다.
셀프 조인
셀프 조인 문장
SELECT alias명1.칼럼명, alias명2. 칼럼명
FROM 테이블 alias명1, 테이블 alias 명2
WHERE alias명1.칼럼명1=alias명2.칼럼명2;
메인쿼리와 서브쿼리
서브쿼리 종류 | 설명 |
---|---|
single Row 서브쿼리 | |
(단일 행 서브쿼리) | 서브쿼리의 실행 결과가 항상 1건 이하인 서브쿼리를 의미한다. 단일 행 서브쿼리는 단일 행 비교 연산자와 함께 사용된다. |
비교 연산자 : =,<, ≤, >, ≥. <> | |
Multi Row 서브쿼리 | |
다중 행 서브쿼리 | 서브쿼리의 실행 결과가 여러 건인 서브쿼리, 다중 행 서브쿼리는 다중 행 비교 연산자와 함께 사용. |
비교 연산자 : in, all, any, some, exists | |
Multi Column 서브쿼리 | |
다중 칼럼 서브쿼리 | 서브쿼리의 실행 결과로 여러 칼럼을 반환, 메인쿼리의 조건절에 여러 칼럼을 동시에 비교할 수 있다. |
비교하고자 하는 칼럼 개수와 칼럼의 위치가 동일해야 함 |
서브쿼리를 사용시 주의사항
인라인 뷰
Grouping Columns이 가질 수 있는 모든 경우에 대하여 Subtotal을 생성해야 하는 경우에는 CUBE를 사용하는 것이 바람직하나 ROLLUP에 비해 시스템에 많은 부담을 주므로 사용에 주의해야 한다.
CUBE는 결함 가능한 모든 값에 대하여 다차원 집계를 생성한다. CUBE도 결과에 대한 정렬이 필요한 경우는 ORDER BY절에 명시적으로 정렬 칼럼이 표시가 되어야 한다.
GROUPING SETS은 다양한 소계 집합을 만들수 있다.
RANK 함수는 ORDER BY를 포함한 QUERY문에서 특정 항목에 대한 순위를 구하는 함수. 동일 값 동일 순위 부여