728x90
반응형
1. 집합 연산자란?
간단하게 말하면 각기 다른 테이블에서 가져온 데이터를 조인을 사용하지 않고 합쳐서 보여주는 방법이다. 2개 이상의 SELECT 결과를 연산자로 묶어, 마치 1개의 SELECT 쿼리를 친 결과처럼 보이게 한다.
따라서,
- 서로 다른 테이블에서 유사한 형태의 결과를 반환하는 것을 하나의 결과로 합치고자 할때
- 동일 테이블에서 서로 다른 질의를 수행하여 결과를 합치고자 할 때
의 상황에 집합 연산자를 사용한다.
집합 연산자에는 UNION, UNION ALL, INTERSECT, MINUS 가 있고 구분하자면
- UNION --> 합집합 / 중복ROW 제거
- UNION ALL --> 합집합 / 중복ROW 유지
- INTERSECT --> 교집합
- MINUS --> 차집합
1-2. 집합연산자를 사용하려면 다음 제약 조건을 만족해야 한다.
- SELECT 절의 칼럼 수가 동일해야 한다.
즉, 꼭 동일한 칼럼을 사용해야 한다는 것이 아니다. 예를 들면, 아래의 쿼리도 정상적인 결과를 반환한다.
예) SELECT EMPNO, ENAME, JOB FROM EMP
UNION ALL
SELECT DEPTNO, DNAME, LOC FROM DEPT
;
** 출력결과의 컬럼명은 첫번째 SELECT 문의 컬럼명이 된다.
위의 쿼리 결과
- SELECT절의 동일 위치에 존재하는 칼럼의 데이터 타입이 동일한 데이터 타입이여야 한다.
그렇지 않으면 아래의 예시처럼 HIREDATE(Date 타입) - DEPTNO(Number 타입) 간에 데이터타입이 동일하지 않다는 오류가 나는 것을 볼 수 있다.
- ORDER BY 는 마지막 SELECT 문 아래에 한번만 작성한다.
집합연산자는 SELECT 해온 결과를 합치는 역할이다. 따라서 각각의 SELECT 문에 따로 ORDER BY를 줄 경우 오류가 나게 된다. ORDER BY 는 쿼리 결과에 대한 정렬처리이다.
++ 이분이 진짜 깔끔하게 핵심 정리를 잘하셨음.
728x90
반응형
'study_db' 카테고리의 다른 글
오라클 & 치환/끄기, 대체 변수 입력 창 (0) | 2022.10.21 |
---|---|
ROWNUM 이해하기 (0) | 2021.04.17 |
데이터 모델링의 식별자 개념 (0) | 2021.04.17 |
데이터모델링의 3가지 요소 : 관계(Relationship)에 대한 이해 (0) | 2021.02.10 |
데이터모델링의 3가지 요소 : 속성(Attribute)에 대한 이해 (0) | 2021.02.07 |