서브쿼리란 ?
다른 테이블의 값을 기준으로 한 테이블에서 데이터를 검색할 수 있도록 다른 쿼리 내부에 중첩된 쿼리
- 즉 , 다른 쿼리 내부에 포함되어 있는 Select 문을 의미 한다.
서브쿼리의 특징
메인 쿼리 안에서 또 다른 쿼리문이 있는 것
반드시 서브쿼리를 괄호로 묶는다.
쿼리의 Select , from , where , having 및 join 절 에서 사용한다.
서브 쿼리는 결과가 한 개 이상 반환될때는 in , any , all 연산자를 사용한다.
서브 쿼리는 결과가 한 개일 때는 비교연산자를 사용한다.
비교연산자
= : (Equal): 값이 동일한 경우 참입니다.
> : (Greater Than): 값이 비교 대상보다 큰 경우 참입니다.
< : (Less Than): 값이 비교 대상보다 작은 경우 참입니다.
>= : (Greater Than or Equal To): 값이 비교 대상보다 크거나 같은 경우 참입니다.
<= : (Less Than or Equal To): 값이 비교 대상보다 작거나 같은 경우 참입니다.
<> : (Not Equal): 값이 동일하지 않은 경우 참입니다.
ex) select * from emp where ename = ( 서브쿼리문장 );
단일 값 비교
서브쿼리가 반환하는 결과가 하나의 값을 비교하는 경우
select * from table1 where column1 = (select column2 from table2 where condition);
다중 값 비교
서브쿼리가 반환하는 결과가 여러 개의 값을 비교할 때
select * from table1 where column1 in (select column2 from table2 where condition);
서브쿼리 예제
select emp_name, salary,
(select avg(salary) from employees where dept_id = e.dept_id)
from employees e
where salary > (select avg(salary) from employees where dept_id = e.dept_id); < select절 에서 사용 >
select name , dname from student s, department d
where s.deptno1 = (select deptno1 from student where name ='이윤나')
and s.deptno1 = d.deptno; < where절 에서 사용 >
select e.name , e.position , e.pay
from emp2 e join (select position,max(pay) from emp2 group by position)m
on e.position = m.position and e.pay = pay; < join절 에서 사용 >
'Database > SQL' 카테고리의 다른 글
transaction(트랜잭션) (0) | 2024.07.09 |
---|---|
Sequence (0) | 2024.07.09 |
rownum (0) | 2024.07.08 |
테이블 복사 / 레코드 복사 (0) | 2024.07.08 |
뷰 ( View ) (0) | 2024.07.08 |