티스토리 뷰
1. 집합연산자(SET_OPERATOR)
- 연관된 데이터를 조회하는 방법 중 하나이다.
-
여러 개의 질의의 결과를 연결하여 하나로 결합하는 방식 사용
(즉, 집합 연산자는 2개 이상의 질의 결과를
하나의 결과로 만들어 준다.)
n 일반적으로 집합 연산자를 사용하는 상황
- 서로 다른 테이블에서
유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할 때 사용한다.
- 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합치고자 할 때 사용한다.
- 이외에도 튜닝관점에서 실행계획을 분리하고자 하는 목적으로도 사용한다.
n 집합 연산자를 사용하기 위한 제약조건 (조건을 지키지 않을 시 데이터베이스가 오류 반환)
- SELECT 절의 칼럼 수가 동일
- SELECT 절의 동일 위치에 존재하는 칼럼의 데이터 타입이 상호 호환 가능 (반드시 동일한 데이터 타입일 필요는 없다.)
집합 연산자 |
연산자의 의미 |
UNION |
여러 개의 SQL문의 결과에 대한 합집합으로 결과에서 모든 중복된 행은 하나의 행으로 만든다. |
UNION ALL |
여러 개의 SQL문의 결과에 대한 합집합으로 중복된 행도 그대로 결과로 표시된다. 즉, 단순히 결과만 합쳐놓은 것이다. 일반적으로 여러 질의 결과가 상호 배타적인(Exclusive)일 때 많이 사용한다. 개별 SQL문의 결과가 서로 중복되지 않는 경우, UNION과 결과가 동일하다. (결과의 정렬 순서에는 차이가 있을 수 있다.) |
INTERSECT |
여러 개의 SQL문의 결과에 대한 교집합이다. 중복된 행은 하나의 행으로 만든다. |
EXCEPT |
앞의 SQL문의 결과에서 뒤의 SQL문의 결과에 대한 차집합이다. 중복된 행은 하나의 행으로 만든다. (Oracle에서는 MINUS를 사용한다.) |
l 문법
SELECT 칼럼명1, 칼럼명2, …
FROM 테이블명1
[WHERE 조건식] [ [ GROUP
BY 칼럼(Column)이나 표현식 [HAVING 그룹조건식] ]
집합연산자
SELECT 칼럼명1, 칼럼명2, …
FROM 테이블명2
[WHERE 조건식] [
[GROUP BY 칼럼(Column)이나 표현식 [HAVING
그룹조건식] ]
[ORDER BY 1, 2 [ASC 또는 DESC] ] ;
- 집합 연산자는 사용상의 제약조건을 만족한다면 어떤 형태의 SELECT문이라도 이용가능하다.
- 집합 연산자는 여러 개의 SELECT문을 연결하는 것에 지나지 않는다.
- ORDER BY는 집합 연산을 적용한 최종 결과에 대한 정렬 처리이므로 가장 마지막 줄에 한번만 기술한다.
'자격증 > SQLD' 카테고리의 다른 글
SQLD - SQL 활용 [서브쿼리] (0) | 2017.08.14 |
---|---|
SQLD - SQL 활용 [계층형 질의와 셀프 조인] (0) | 2017.08.14 |
SQLD - SQL 활용 [표준 조인] (0) | 2017.08.14 |
SQLD - SQL 기본 [조인(JOIN)] (0) | 2017.08.11 |
SQLD - SQL 기본 [ORDER BY 절] (0) | 2017.08.07 |