TIL 열번째날, 오늘도 새로 학습한 내용을 적어보자.
습득한 지식 및 내용
오라클 EXISTS
, NOT EXISTS
사용법
: EXISTS
는 서브 쿼리의 결과가 한 건이라도 존재하면
TRUE 없으면 FALSE를 리턴함
: IN
과의 차이점 -> IN
은 서브쿼리 결과를 모두 수행하고, EXISTS
는 일치하는 결과가 있으면 더 이상 수행하지 않음
: 서브 쿼리 테이블(dept_history)에 데이터량이 많으면 EXISTS를 사용하는것이 성능이 좋다고 함
SELECT a.empno
, a.ename
, a.deptno
FROM emp a
WHERE a.job = 'MANAGER'
AND EXISTS (SELECT 1
FROM dept_history aa
WHERE aa.empno = a.empno)
cf) 참고 자료: https://gent.tistory.com/278
SET
: 두 select문을 통해 얻어온 결과에 대해 집합 연산을 할 수 있는 명령문
: 두 select문을 통해 가져온 컬럼의 형태가 완전히 일치해야함
: UNION
-> 합집합
: UNION ALL
-> 합집합, 중복된 데이터를 모두 가져옴
: INTERSECT
-> 교집합
: MINUS
-> 차집합
// SET 실습
-- UNION
select empno, ename, job, deptno
from emp
where deptno = 10
union
select empno, ename, job, deptno
from emp
where job = 'CLERK';
-- UNION ALL
select empno, ename, job, deptno
from emp
where deptno = 10
union all
select empno, ename, job, deptno
from emp
where job = 'CLERK';
-- INTERSECT
select empno, ename, job, deptno
from emp
where deptno = 10
intersect
select empno, ename, job, deptno
from emp
where job = 'CLERK';
-- MINUS
select empno, ename, job, deptno
from emp
where deptno = 10
minus
select empno, ename, job, deptno
from emp
where job = 'CLERK';