Certification/SQLP

[SQL] ANY / ALL / EXISTS / NOT EXISTS

엘호리스 2019. 2. 26. 17:42

SQL ANY , ALL , EXISTS , NOT EXISTS


ANY 연산자는 주로 서브쿼리에 사용되며 하나라도 만족하는 값이 있다면 true를 반환한다.

ANY(서브쿼리 or 값)


활용 예제 1) sal > 300 OR sal > 400 OR sal > 500 이므로 sal이 300보다 크면 조건을 만족한다.

SELECT ename, sal

FROM emp

WHERE sal > ANY(300, 400, 500);


활용 예제 2) 서브쿼리에서 값이 여러개 나올 수 있는 경우 ANY 연산자를 활용하였다.

SELECT ename, sal

FROM emp

WHERE sal > ANY( SELECT sal FROM emp WHERE deptno = 20 );



ALL 연산자는 전체 만족해야 true를 반환하는 특징을 가지고 있다.

ALL(서브쿼리 or 값)


활용 예제 1) sal > 300 AND sal > 400 AND sal > 500 이므로 sal이 500보다 크면 조건을 만족한다.

SELECT ename, sal

FROM emp

WHERE sal > ALL(300, 400, 500);


활용 예제 2) 서브쿼리에서 반환된 값들이 전부 true여야 한다.

SELECT ename, sal

FROM emp

WHERE sal > ALL( SELECT sal FROM emp WHERE deptno = 20);



EXISTS 조건식은 행의 존재 여부를 확인하여 true 값을 반환합니다. 반환값 타입 boolean

EXISTS(서브쿼리)


활용 예제) 서브쿼리에서 반환하는 행이 1개라도 있으면 true를 반환합니다.

SELECT ename, sal

FROM emp

WHERE EXISTS( SELECT * FROM emp WHERE sal = 300 );



NOT EXISTS 조건식은 반환된 행이 하나도 없어야 true 값을 반환합니다. 반환값 타입 boolean

NOT EXISTS(서브쿼리)


활용 예제) 서브쿼리에서 반환하는 행이 없어야 true를 반환합니다.

SELECT ename, sal

FROM emp

WHERE NOT EXISTS( SELECT * FROM emp WHERE sal = 300 );