집합 연산자(Set Operator)
여러 개의 질의의 결과를 연결(결합)하여 하나로 결과로 만드는 방식을 의미한다. (즉, 여러 개의 SELECT문을 연결하는 것)
1) 일반 집합 연산자
① union : 여러 SQL문의 결과에 대한 합집합, union키워드로 구현.
결과에서 중복된 행은 하나의 행으로 만듬. → 중복을 없애기 위한 정렬 작업으로 시스템 부하↑ ↔ union all키워드는 중복을 제외하지 않고 그대로 결합. 즉, 단순히 쿼리결과를 합침.
② intersection : 여러 SQL문의 결과에 대한 교집합, intersect키워드로 구현.
③ difference : 여러 SQL문의 결과에 대한 차집합. 대다수의 벤더는 EXCEPT를, Oracle은 MINUS키워드를 사용. (SQL표준은 EXCEPT)
④ product(cross product 또는 cartesian product) :
- 여러 SQL문의 결과에 대한 곱집합, cross join키워드로 구현.
- JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합을 의미.
2) 순수 관계 연산자
① select연산 : 행, where절로 구현. / select절과 select연산은 의미가 다름을 유의.
② project연산 : 열, select절로 구현.
③ join : 다양한 join기능으로 구현.
3) 제약조건
① select절의 칼럼 수가 동일해야 함.
② select절의 동일 위치에 존재하는 칼럼의 데이터타입이 상호 호환 가능해야 함(반드시 동일한 데이터 타입일 필요는 없다는 것)
③ 두집합의 칼럼명은 달라도 상관없다.
집합 연산자의 결과를 표시할 때 HEADING(컬럼명) 부분은 첫 번째 SQL문에서 사용된 HEADING이 적용됨.
논리적으로 UNION ALL을 제외한 모든 집합 연산은 SQL결과 집합에서 중복된 건을 배제하는 작업을 먼저 수행하고, 그 이후 집합 연산을 수행(논리적인 관점에서의 처리)
'Database' 카테고리의 다른 글
Oracle 서브쿼리(Sub Query) 사용법 & 예제 (0) | 2020.09.17 |
---|---|
계층형 쿼리(Hierarchical Query) 개념 및 실행 순서 상세 정리 (0) | 2020.09.16 |
(Non)Equi join 및 표준 조인(inner, outer, natural, self, cross join, using, on조건절) (0) | 2020.09.14 |
SELECT 문장 실행 순서와 Order by, ROWNUM조건 (0) | 2020.09.12 |
식별자(Identifiers) 분류 및 비식별자와의 관계 (0) | 2020.09.11 |