728x90
728x90

- EXISTS / NOT EXISTS

EMP의 DEPTNO 20이 있을 경우만 SELECT 하겠다

결과는 DEPTNO 20이 EMP 테이블 내에 존재하니 다 나오는 것이다

20이 존재하는데 없는 경우 빼라고 했으니까 결과가 안나오는 것이다

예를들어 특정 부서번호가 없는걸 NOT EXISTS로 빼고 싶다고하면 위와 같이 해주면 된다

1이 존재하지 않냐 존재하냐 여부를 따져주는 것이기때문이다

그래서 NOT EXISTS 괄호 안에 FROM EMP 대신 FROM DUAL을 해줘도 동일하게 돌아간다

 

NOT IN은 속도면에서 성능이 좋지 않기 때문에
쿼리 튜닝을 할 때 NOT IN을 NOT EXISTS로 하려한다

* NOT IN의 경우 조건에 맞는 데이터가 있다고 하더라도 NULL 이 존재하면 NO ROWS SELECTED라고 나오는데 이때 NVL 처리를 해서 NULL 처리를 해줘야 한다

 

- CASE WHEN -THEN/ELSE-END

CASE WHEN 조건 THEN TRUE면 이 값 ELSE 아니면 이 값 END로 마무으리

 

- ROLLBACK / SAVEPOINT

ROLLBACK은 전체 롤백 아닌 P1같이 설정해주면 거기까지만 롤백

 

* Commit

: 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어

트랜젝션의 처리 과정을 데베에 반영하기 위해 변경된 내용을 모두 영구 저장한다

commit 수행하면 하나의 트랜젝션 과정이 종료하게 된다

728x90

+ Recent posts