두개 이상의 테이블에서 JOIN을 사용하지 않고 연관된 데이터를 조회하는 방법중 하나
테이블에서 SELECT한 컬럼의 수와 각 컬럼의 데이터타입이 테이블간 서로 호환이 가능해야함
집합연산자를 사용한 결과는 두개이상의 SELECT문의 결과값을 세로로 연결
조인을 사용한 결과는 두개이상의 테이블 데이터를 가로로 연결한것

UNION -> 합집합
UNION ALL -> UNION에서 중복을 제거하지 않고 정렬도 하지 않음
INTERSECT -> 교집합
EXCEPT(MINUS) -> 차집합
두개이상의 테이블의 컬럼을 하나로 합쳐서 결과를 출력 가능하다
중복데이터는 제거하고 출력값을 자동정렬한다
SELECT DEPTNO, DNAME FROM DEPT
UNION
SELECT DEPTNO, DNAME FROM DEPT2
두개의 테이블에 있는 DEPTNO, DNAME 에 모든 데이터를 출력한다
컬럼갯수와 컬럼간의 데이터타입이 맞아야한다
SELECT DEPTNO, DNAME FROM DEPT
UNION ALL
SELECT DEPTNO, DNAME FROM DEPT2
모든 데이터를 나열한다
컬럼이 4개가 되는게 아니라 컬럼은 2개이고 데이터 합쳐져서 출력된다
SELECT DEPTNO, DNAME FROM DEPT
INTERSECT
SELECT DEPTNO, DNAME FROM DEPT2
겹치는 데이터만 출력한다
중복된 데이터는 지운다
SELECT DEPTNO, DNAME FROM DEPT
EXCEPT
SELECT DEPTNO, DNAME FROM DEPT2
겹치는 데이터를 처음나온 테이블을 기준으로 지운다음 출력한다
내 생각에는 집합연산자를 사용하기 위한 조건이 DB의 근본적인
효율성이 떨어지는 구조라고 생각이 든다
테이블간 같은 컬럼과 같은 데이터타입을 비교하는 경우에 집합연산자를 쓸수 있는데
테이블간 같은 컬럼과 같은 데이터타입 이라면 하나로 관리하지
여러개의 테이블로 관리될것 같지는 않다
JOIN의 경우가 훨씬더 광범위하게 사용될것 같다
아예 배제하라는 얘기가 아니고 알아두면 좋다