Database/SQL

서브쿼리( Subquery )

NiceKHJ 2024. 7. 8. 17:30

서브쿼리란 ?

다른 테이블의 값을 기준으로 한 테이블에서 데이터를 검색할 수 있도록 다른 쿼리 내부에 중첩된 쿼리

  • 즉 , 다른 쿼리 내부에 포함되어 있는 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