서브 쿼리
문제 : Abel보다 급여가 많은 사원은 누구인가?
ð 질문 1 : Abel의 급여는 얼마인가?
ð 질문 2 : 어느 사원의 급여가 Abel보다 많은가?
문제에 대한 질문 사항을 나눠서 작성해야할때 서브쿼리를 이용한다.
서브쿼리를 이용한 SQL문
SELECT ~
FROM ~
WHERE ~ 연산자 (SELECT ~ FROM ~ WHERE ~)
지침
- 서브 쿼리는 괄호로 묶어야 한다!!
- 단일(다중) 행 서브 쿼리에는 단일(다중) 행 연산자 사용한다.
- 서브 쿼리는 ORDER by 절을 Top-N분석을 수행하지 않을 경우 필요 없다.
- 서브 쿼리는 최대 255개까지 사용할 수 있다.
- WHERE절, 그룹Having절에서 서브 쿼리 사용할 수 있다.
group by department_id
having min(salary) > (select min(salary) from employees where department_id = 50)
- 서브 쿼리 내에서 그룹 함수를 쓸 수 있다.
where salary = (select min(salary) from employees)
단일 행 서브 쿼리
서브 쿼리의 결과 값이 단일 행이며 단일 칼럼이나 다중 칼럼으로 반환
다중 행 서브 쿼리
다중 행 연산자와 함께 사용해야한다.
ð 메인 쿼리의 비교 조건이 서브 쿼리의 결과 중에서
- IN : 하나라도 일치하면 참이 되는 연산자
- ANY, SOME : 하나이상 일치하면 참이 되는 연산자
WHERE salary ▣ ANY (400, 700, 900)
< ANY : 900(최대값)보다 작음
> ANY : 400(최소값)보다 큼
= ANY : In과 동일함
- ALL : 모든 값이 일치하면 참이 되는 연산자
WHERE salary ▣ ALL (400, 700, 900)
< ALL : 400(최소값)보다 작음
> ALL : 900(최대값)보다 큼
- EXISTS : 하나라도 반환하면 참이 되는 연산자
- Not : IN, ANY, ALL연산자와 함께 사용 가능하며 널 값이 포함될 가능성이 있는 경우 Not in 연산자 사용 X
'Oracle' 카테고리의 다른 글
Oracle 문제 풀이 리뷰) (0) | 2022.08.15 |
---|---|
Oracle Review : DCL/DDL/DML/TCL 정의 및 종류 (0) | 2022.08.07 |
Oracle Review : Join / 등가 조인 / 외부 조인 / 자가 조인 (0) | 2022.08.07 |
Oracle Review : Group By절 (0) | 2022.07.23 |
댓글