오라클 서브쿼리

Oracle 2014. 11. 12. 14:39

단일행 서브쿼리 

EX) SELECT DNAME FROM DEPT WHERE DEPTNO = ( SELECT DEPTNO FROM EMP WHERE ENAME='SCOTT');

EX) SELECT ENAME, SAL FROM EMP WHERE SAL > ( SELECT AVG(SAL) FROM EMP);

다중행 서브쿼리

IN - IN 연산자는 메인 쿼리의 비교 조건에서 서브 쿼리의 출력결과와 하나라도 일치하면 메인 쿼리의 WHERE절이 참이 되는 연산자.

EX) SELECT ENAME, SAL, DEPTNO FROM EMP WHERE DEPTNO IN (SELECT DISTINCT DEPTNO FROM EMP WHERE SAL >= 3000); 

ALL - ALL연산자는 메인쿼리의 비교조건이 서브 쿼리의 검색결과와 모든값이 일치해야 참... 검색한 값에 AND연산을 해서 모두 참이면 참이  ALL 은 모든 비교값 보다 큰지를 묻는 것이므로 최대값보다 더 크면 참이 됩니다. 

EX) SELECT ENAME, SAL FROM EMP WHERE SAL > ALL(SELECT SAL FROM EMP WHERE DEPTNO = 30 );

ANY - ANY연산자의 조건은 메인 쿼리의 비교 조건이 서버쿼리의 검색결과와 하나 이상만 일치하면 참입니다. ANY는 찾아진 값에 대해서 하나라도 크면 참이 되는 셈이 됩니다 그러므로 검색한 값 중 에서 가장 작은 갑 ㅅ즉 최소값보다 크면 참이 됩니다. 

EX) SELECT ENAME, SAL FROM EMP WHERE SAL > ANY ( SELECT SAL FROM EMP WHERE DEPTNO = 30);


블로그 이미지

은호아빠

여행, 맛집, 일상, 프로그래밍, 개발자, 윈도우, 웹, jsp, spring, db, mysql, oracle, c#

,