티스토리 뷰

MODEL/ORACLE

[ORACLE] exists 연산자

찰떡쿠키부스트 2017. 11. 16. 11:00

 

 

exists 

​- 말그대로 존재하는지 안하는지 알아보는 연산자

in 이랑 역할은 비슷하지만  좀다름.

ex) in을 쓸 경우

select department_id, employee_id

from employees

where department_id in (30,60,90)

ex2) exists를 쓸 경우

select emp.department_id, emp.employee_id

from employees emp

where exists

(select dep.department_id

from departments dep

where dep.department_id in (30, 60, 90)

and emp.department_id=dep.department_id)


1)exists 는 뒤에 서브쿼리만 올 수 있다.

2) 그냥 row가 있는지 없는지 (존재하는지) 확인만 한다.(1개만 존재해도 조건 만족)

----> 그래서 in 보다 더 빨리 값을 처리하기때문에 나중에 튜닝할때나

서브쿼리를 써야될때는 exists가 훨씬 효율적


3)그래서 서브쿼리 select는 아무꺼나 와도됨 (ex. 1)

---> 값 확인안하고 걍 존재하는지만 확인하니까


4) 서브쿼리 안에서 조인해줘야됨


5) not 사용할때 not in 은 null 값 못 읽어서 nvl 함수 써줘야되지만 exists는 걍 읽음

 ( 왜냐면 3번째말하는데 그냥 존재여부만 확인하기때문에!!!!!!!!!)

댓글