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';