* 집합 연산 : 레코드끼리 더하거나 빼는 레코드 사칙연산
* 집합 연산자 : UNION(합), INTERSECT(교차) EXCEPT(차)
- 집합 연산자는 중복 행을 제외한다.
- 집합 연산자에서 중복 행을 포함하려면 ALL 옵션을 사용한다.
예제 테이블
<goods_1 테이블>
id | name |
0001 | 티셔츠 |
0002 | 블라우스 |
0003 | 도마 |
0004 | 식칼 |
<goods_2 테이블>
id | name |
0001 | 티셔츠 |
0002 | 블라우스 |
0005 | 장갑 |
구문
SELECT id, name
FROM goods_1
UNION
SELECT id, name
FROM goods_2
결과
id | name |
0001 | 티셔츠 |
0002 | 블라우스 |
0003 | 도마 |
0004 | 식칼 |
0005 | 장갑 |
결과는 두개의 테이블에 포함되어 있는 레코드가 모두 합쳐진(UNION)형태가 된다. =합집합 모양
그리고, UNION과 같은 집합 연산자는 모두 중복 행을 제외한다는 것을 기억하자.
= 중복이 제거된 형태로 나온 결과 표를 보면 쉽다.
Q. 중복 행을 포함하고 싶다면?
A. ALL 옵션 사용
구문
SELECT id, name
FROM TEST1
UNION ALL
SELECT id, name
FROM TEST2
UNION | UNION ALL |
중복 제거 | 중복 제거 X |
결과값 자동 정렬 후 반환 | 정렬 X , 마지막 연결한 SELECT문에만 ORDER BY 구 가능 |
★ 집한 연산 주의사항
1. 연산 대상이 되는 열 수가 같아야함
-- SELECT문의 컬럼명칭, 컬럼위치, 컬럼수를 같게 맞출것 / alias 이용해서라도 같게 해야 정확함
2. 같은 데이터 형태여야 함
3. SELECT, WHERE, GROUP BY 같은 구는 어떤것이든 사용 가능하지만, ORDER BY 구는 마지막에 하나만 가능
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] 중복 데이터 찾기 / 중복 데이터 개수 찾기 GROUP BY / HAVING / COUNT (0) | 2021.03.05 |
---|---|
[Oracle] 조회한 가상 컬럼의 연산 (0) | 2021.02.10 |
[Oracle] INSERT / SELECT 결과 INSERT / INSERT INTO SELECT (0) | 2020.12.18 |
[Oracle] Create / Alter / Drop (0) | 2020.12.18 |
[Oracle] 자동 COMMIT, ROLLBACK 처리 (0) | 2020.12.09 |