나람지의 개발일기
2023.03.08 본문
EXISTS 연산자
값이 존재하는지 안 하는지가 중요한 연산자
서브쿼리로부터 결과값이 넘어오면 true / 넘어오지 않으면 false 가 됨
(예제)
※ 부하직원이 존재하는 즉, 자기자신이 매니저인 사원 출력하는 문제
select employee_id, last_name, job_id, department_id
from employees
where employee_id in (select manager_id
from employees);
→ 위의 구문과 같은 내용의 일반 서브쿼리 구문. 여기서 성능적으로 더 나은 쿼리임
→ 나도 모르는 부분은 서브쿼리로 작성함
→ 일반적인 서브쿼리로 구문을 짤 수 없는 상황에서는 exists 연산자를 사용하는 쿼리를 사용한다.
WITH 절
반복될 것 같은 구문을 위에 "선언(정의)"해두는 것
(예제)
※ 부서별 사원의 수를 구하는 서브쿼리
쿼리 구문이 길어지므로 WITH절로 위에서 먼저 선언을 하고 사용함
(원래라면 1번 쿼리가 3번, 4번 쿼리에 들어가고 2번 쿼리가 3번, 4번 쿼리에 들어가서 실행이 되므로 쿼리가 길어진다.)
(7-13 장, p.179)
Correlated subquery
한 테이블의 행에 준하여 다른 테이블의 행을 갱신할 때 correlated subquery를 사용
Correlated subquery를 사용하여 행 갱신 및 삭제
※ 조인을 계속해야하는 상황이라면 조인해야하는 테이블에 컬럼을 추가해서 같이 조회하는 것이 나음
[ 위의 일반 update 구문을 상호관련 서브쿼리를 이용하여 간단하게 작성한 ver ]
'학원 > DB' 카테고리의 다른 글
D+24)22.10.28 (0) | 2022.10.28 |
---|---|
D+19)22.10.21 (0) | 2022.10.22 |
D+18)22.10.20 (0) | 2022.10.20 |
D+6)2022.09.29 (0) | 2022.09.29 |
D+5)22.09.28 (0) | 2022.09.28 |