[TIL] 2024.07.01.

limlim·2024년 7월 1일
0

TIL

목록 보기
10/27

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';
profile
不怕慢,只怕站 개발자

0개의 댓글