본문 바로가기
oracle

오라클 8 (UNION)

by 킹차니 2021. 3. 20.

UNION은 두개의 테이블을 아래로 나란히 합칠 때 사용한다.

예로 만약 두개의 게시판이 있고 그 두개의 게시판의 테이블이 각 각 따로 존재하는데 이 둘을 합쳐서 쿼리를 수행하고 싶다면?

이럴 때 사용할 수 있다. (또한 테이블 하나 만으로도 수행이 가능하다.)

 

아래와 같은 두 개의 표가 있다고 해보자.

NOTICE와 QNA 테이블

우리는 이 둘을 합치고 싶은 것이다.

근데 union은 기능이 조금 씩 다르다.

 

1. union: 두개의 테이블을 합쳐주는데, 만약 두 개의 테이블에 공통 분모가 있다면 그것 중 하나는 출력하지 않는다.

              위의 테이블에서 NOTICE 와 QNA는 id=3, title=오라클이란2, writer_id=KDB 라는 완전 똑같은 열이 존재한다. 얘는 하나만 출력                하는 것이다.

SELECT ID, TITLE, WRITER_ID FROM NOTICE
	UNION
SELECT ID, TITLE, WRITER_ID FROM QNA;

 

 

2. union all : 얘는 그냥 싹다 출력해버린다. 위의 두 테이블을 unipn all하면 총 4+3=7개의 row가 나올 것이다.

SELECT ID, TITLE, WRITER_ID FROM NOTICE
	UNION ALL
SELECT ID, TITLE, WRITER_ID FROM QNA;

 

 

3. minus: 마이너스는 아래의 공통 분모를 빼주는 것이다. 즉 위에서 NOTICE 와 QNA는 id=3, title=오라클이란2, writer_id=KDB 가 공통                  분모이므로, 쿼리를 수행하면 NOTICE테이블의 id=3로우는 출력 되지 않을 것이다.즉 3개의 로우만 출력된다.

SELECT ID, TITLE, WRITER_ID FROM NOTICE
	MINUS
SELECT ID, TITLE, WRITER_ID FROM QNA;

 

 

4.intersect: 두 테이블 중 공통 분모만 뽑는다. 즉 id=3, title=오라클이란2, writer_id=KDB 만 뽑힐 것이다.

SELECT ID, TITLE, WRITER_ID FROM NOTICE
	INTERSECT
SELECT ID, TITLE, WRITER_ID FROM QNA;

 

 

 

아래는 UNION의 결과이다.

 

union 실행결과

 

'oracle' 카테고리의 다른 글

오라클10 (엔티티 제약조건)  (0) 2021.03.21
오라클9 (도메인제약조건)  (0) 2021.03.21
오라클7 (JOIN2)  (0) 2021.03.20
오라클6( JOIN 1)  (0) 2021.03.19
오라클4(함수)  (0) 2021.03.19