집합연산자
두 개 이상의 쿼리 결과를 하나로 결합시키는 연산자
1. UNION
여러개의 SQL문의 결과(중복 제거)에 대한 합집합
예제: salesman과 mamger의 결과 결합
SELECT ename, job FROM emp_table WHERE job = 'SALESMAN'
UNION
SELECT ename, job FROM emp_table WHERE job = 'MANAGER';
2. UNION ALL
여러개의 SQL문의 결과(중복 포함)에 대한 합집합
예제: 급여가 1000 미만인 직원, 2000 미만인 직원을 조회하여 결합
SELECT ename, sal FROM emp_table WHERE sal < 1000
UNION ALL
SELECT ename, sal FROM emp_table WHERE sal < 2000
ORDER BY sal;
* UNION과 UNION ALL의 차이
- UNION은 쿼리의 결과를 합치며 중복된 row의 값은 제거하는 것에 반하여
UNION ALL은 쿼리의 결과를 합치며 중복된 결과도 모두 보여준다. 즉 단순 합치는 것으로 속도가 더 빠르다.
3. INTERSECT
여러개의 SQL문의 결과에 대한 교집합(중복은 하나의 결과로 출력)
→ EXISTS, IN 서브쿼리를 이용하여서도 가능하다.
예제: 급여가 1000 초과 2000미만인 직원을 조회
SELECT ename, sal FROM emp_table WHERE sal > 1000
INTERSECT
SELECT ename, sal FROM emp_table WHERE sal < 2000
ORDER BY sal;
4. MINUS
여러개의 SQL문의 결과에 대한 차집합 (합집합 부분을 뺀 나머지 한쪽)
예제: 급여가 2000 초과인 사원을 제외하여 조회
SELECT ename, sal FROM emp_table
MINUS
SELECT ename, sal FROM emp_table WHERE sal > 2000;
'Database' 카테고리의 다른 글
11. 그룹함수: ROLLUP/CUBE/GROUPING SET (0) | 2023.05.04 |
---|---|
10. 시퀀스/뷰 (0) | 2023.05.04 |
8. 서브쿼리 (0) | 2023.05.04 |
7. JOIN (0) | 2023.05.04 |
6. DML/TRANSACTION (0) | 2023.05.04 |