본문 바로가기
DBMS/Oracle

[Oracle] UNION, UNION ALL, 집합 연산

by 성은2 2021. 1. 13.

* 집합 연산 : 레코드끼리 더하거나 빼는 레코드 사칙연산

* 집합 연산자 : 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 구는 마지막에 하나만 가능