집합연산자의 기초
집합연산자는
UNION : 합집합
UNION ALL : 합집합+겹치는 것까지 중복표현
INTERSECT : 교집합
MINUS : 차집합
로 나뉜다.
- 실행 순서를 변경할 때 괄호를 사용한다.
- ORDER BY절은 명령문의 맨 끝에만 한번 올 수 있다.
- SELECT 의 리스트 표현식은 개수가 같아야한다.
* 개수가 안맞을 경우 NULL을 사용할 수도 있다.
다음의 예시를 참고하자.
1 2 3 4 5 6 7 | SELECT DEPTNO, NULL, SUM(SAL) FROM EMP GROUP BY DEPTNO UNION ALL SELECT DEPTNO, JOB, SUM(SAL) FROM EMP GROUP BY DEPTNO, JOB; | cs |
주의할 점으로는 두 개이상의 쿼리문을 사용해야 하면, 각 쿼리문의 데이터 타입을 일치 시켜야한다.
다음의 예시를 보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | select last_name, salary, department_id from employees where salary >= 10000 union select last_name, salary, department_id from employees where department_id = 80 order by last_name; select last_name, salary, department_id from employees where salary >= 10000 intersect select last_name, salary, department_id from employees where department_id = 80; select last_name, salary, department_id from employees where salary >= 10000 union all select last_name, salary, department_id from employees where department_id = 80 order by last_name; select last_name, salary, department_id from employees where salary >= 10000 minus select last_name, salary, department_id from employees where department_id = 80; | cs |
SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.
'DATABASE(oracleDB 11g) > SQL' 카테고리의 다른 글
[SQL]계층적 질의 (0) | 2019.01.30 |
---|---|
[SQL]GROUP BY의 확장 (0) | 2019.01.30 |
[SQL]INNER JOIN과 OUTER JOIN, SELF JOIN, CROSS JOIN 에 대하여 (0) | 2019.01.30 |
[SQL]조인(JOIN)의 기초-Equi join 과 Non-Equi Join (0) | 2019.01.29 |
[SQL] 분석 함수 (0) | 2019.01.29 |