집합 연산자(Union, Union all, minus) -> 시큐어 코딩
서로다른 두개의 SQL 문장의 실행 결과를 하나로 합쳐서 보여준다.
문제_
emp테이블에서 업무가 MANAGER 인 사원인 사번, 이름을 출력하시오.
해설_
select empno,ename from emp
where job='MANAGER'; --> SQL문장 첫번째
EMPNO ENAME
---------- ----------
7566 JONES
7698 BLAKE
7782 CLARK
ed 문 안에 이렇게 서로 다른 조건을 주게되었을때 두개를 합치는 방법이 곧 union 기본 개념이다
select empno,ename from emp
where job='MANAGER'
<-- 여기에 union 삽입하면 완성 두개의 조건이 나온다 즉 서로다른 결과를 합쳐서 보여주는 역할
select empno,ename from emp
where ename like '%A%'
아래와 같다
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1 select empno,ename from emp
2 where job='MANAGER'
3 union
4 select empno,ename from emp
5* where ename like '%A%'
SQL> /
EMPNO ENAME
---------- ----------
7499 ALLEN
7521 WARD
7566 JONES
7654 MARTIN
7698 BLAKE
7782 CLARK
7876 ADAMS
7900 JAMES
추가 내용_
union 의 반대 즉 차집합은 minus 이다 정 반대되는 결과가 나온다. 제외한 결과값을 출력
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1 select empno,ename from emp
2 where job='MANAGER'
3 minus ----------------------> 차집합(A 범위 - B 범위)
4 select empno,ename from emp --------------> 해당되는 SQL 구문만 출력
5* where ename like '%A%'
SQL> /
EMPNO ENAME
---------- ----------
7566 JONES
이렇게 나온다.
그렇다면 union 과 union all 의 차이는 무엇일까
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1 select empno,ename from emp
2 where job='MANAGER'
3 union all
4 select empno,ename from emp
5* where ename like '%A%'
SQL> /
EMPNO ENAME => union all -> 합집합인데 둘다 있는 그대로를 다 보여준다. 순서가 뒤섞이지않음
---------- ----------
7566 JONES
7698 BLAKE
7782 CLARK
7499 ALLEN
7521 WARD
7654 MARTIN
7698 BLAKE
7782 CLARK
7876 ADAMS
7900 JAMES
10 개의 행이 선택되었습니다.
ㄴ Union all을 실행한 결과.
추가 실행 결과.
EMPNO JOB
---------- ----------
7566 MANAGER
7698 MANAGER
7782 MANAGER
7499 ALLEN
7876 ADAMS
** 중요 **
집합 연산자의 주의할점
1. 서로 다른 필드를 사용해도 상관없다. 필드명이 달라도 상관없다.
2. 합쳐지는 필드의 자료형은 반드시 같아야 한다.
SQL> ed
file afiedt.buf(이)가 기록되었습니다
1 select empno,sal from emp
2 where job='MANAGER'
3 union all
4 select empno,ename from emp
5* where ename like 'A%'
SQL> /
select empno,sal from emp
*
1행에 오류:
ORA-01790: 대응하는 식과 같은 데이터 유형이어야 합니다
sal 는 숫자형이기때문에 ename과 서로 다른 자료형으로 출력이 되지 않는다.
3. 합쳐지는 필드의 갯수는 서로 같아야 한다.
** 중요 **
'Oracle > View' 카테고리의 다른 글
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 페이징 처리 기법 2 (0) | 2019.07.02 |
---|---|
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 페이징 처리 기법 1 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 4 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 단순뷰 1편 (0) | 2019.07.02 |
데이터 베이스_ 오라클 VIEW [view 종류, 관리] 복합뷰 활용 3 (0) | 2019.07.02 |
댓글