Oracle

[Oracle] INTERSECT, MINUS, UNION,

allempty_sheep 2024. 6. 20. 16:22
반응형

 

데이블 두개의 교집합을 해볼 것이다.

테이블 두개를 생성해보자

CREATE TABLE tblUnionA (
   name varchar2(100)
   );

CREATE TABLE tblUnionB (
   name varchar2(100)
   );

 

데이터를 삽입

INSERT INTO tbluniona VALUES ('사과');   
INSERT INTO tbluniona VALUES ('귤');   
INSERT INTO tbluniona VALUES ('파인애플');   
INSERT INTO tbluniona VALUES ('바나나');   
INSERT INTO tbluniona VALUES ('포도');

INSERT INTO tblunionb VALUES ('키위');   
INSERT INTO tblunionb VALUES ('바나나');   
INSERT INTO tblunionb VALUES ('오렌지');   
INSERT INTO tblunionb VALUES ('포도');   
INSERT INTO tblunionb VALUES ('복숭아');

 

데이터를 확인 해 보자.

SELECT * FROM tbluniona;
SELECT * FROM tblunionb;

tbluniona
tblunionb

 

커밋도 한번 해주자

commit;


1. 교집합(INTERSECT)

◼ 교집합은 둘다 포함된 내용만 나온다.

SELECT * FROM tbluniona INTERSECT SELECT * FROM tblunionb;

 

 

2. 차집합(MINUS)

◼ tbluniona - tblunionb 의 결과로서 a 값들에서 b값을 빼는데 공통적인 값들이 사라진 집합이다.

SELECT * FROM tbluniona MINUS SELECT * FROM tblunionb;

바나나 포도가 빠짐

 

3. 합집합(UNION)

합집합은 중복 제거와 중복 포함출력을 할 수 있다.

◼ UNION 은 중복값을 제거하고

◼ UNION ALL 은 중복값을 포함한다.

사용할때 주의 사항으로는

1. 위 아래 테이블 컬럼수를 동일하게 선언 해 주어야 한다.

2. 컬럼 타입이 동일 하여야 한다.

SELECT * FROM tbluniona UNION SELECT * FROM tblunionb;

중복값 제거

 

SELECT * FROM tbluniona UNION ALL SELECT * FROM tblunionb;

중복값 포함