1. union all
2. union
3. intersect
4. minus
집합 연산자 - 조인은 서로 다른 테이블의 컬럼을 양 옆으로 출력하는 문법이라면 집합 연산자는 서로 다른 테이블의 클럼을 위아래로 출력하는 문법이다
합집합 연산자 : union, union all
교집합 연산자 : intersect
차집합 연산자 : minus
1. union all
예제)직업, 직업별 토탈 월급과 맨 밑에 전체 토탈 월급을 출력하시오
select job, sum(sal)
from emp
group by job
union all
select '토탈월급', sum(sal)
from emp;
* 집합연산자 사용 시 주의사항
1. 집합 연산자 위 아래의 쿼리의 컬럼의 수가 동일해야 한다. 위의 쿼리 컬럼의 개수가 2개면 아래도 2개여야 한다.
2. 집합 연산자 위아래의 쿼리의 컬럼의 데이터 타입이 동일해야 한다.
3. 컬럼 별칭은 맨 위 쿼리에 있는 별칭만 화면에 표시된다. order by 절은 맨 아래의 쿼리에만 사용 가능
예제) 부서 번호, 부서 번호별 토탈월급을 출력하는데 아래와 같이 맨 아래에 전체 토탈월급도 출력하시오
select to_char(deptno) 부서번호, sum(sal) 토탈
from emp
group by deptno
union all
select '전체 토탈 : ', sum(sal)
from emp
order by 토탈;
밑에 쿼리는 '전체 토탈 : '로 문자형이고 부서 번호는 숫자형이라 to_char 사용해서 부서 번호를 문자형을 바꾼다.
2. union - union all과 같이 합집합 연산자인데 union all과 다르게 중복된 데이터를 제거하고 정렬된 상태로 결과가 출력된다.
select job, sum(sal)
from emp
group by job
union
select '전체토탈 : ', sum(sal)
from emp;
3. intersect 연산자 - 두 집합의 교집합을 출력하는 함수
emp01 테이블 : 1,2,3,4
emp02 테이블 : 3,4,5,6 있다고 가정하고
select empno
from emp01
intersect
select empno
from emp02;
4. minus 연산자 - 두 집합 간의 차이를 출력하는 집합 연산자
select empno
from emp01
minus
select empno
from emp02;