메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Pinkgo (토론 | 기여)님의 2025년 4월 2일 (수) 13:21 판

상위 문서: SQL

개요

Subquery란, 다른 쿼리 안에 포함된 select-from-where 쿼리를 의미한다. 예를 들면 아래와 같다.

select name
from instructor
where dept_name = (select dept_name from department where building = 'Watson');

일반적인 SQL의 쿼리는 다음과 같은 형태를 가진다.

select A1, A2, ..., An
from r1, r2, ..., rm
where P

이때, subquery는 select, from, where 절에서 사용될 수 있다.

From 절에서의 Subquery

ri 자리에 하나의 서브쿼리를 넣을 수 있으며, 마치 테이블처럼 다룰 수 있다. 이때 subquery에는 as 키워드를 사용하여 별칭 주는 것이 일반적이다. 이는 아래와 같이 사용된다.

select *
from (select * from instructor where salary > 50000) as high_paid;

Where 절에서의 Subquery

P 자리에 조건식을 쓸 수 있는데, 그 조건식 안에 서브쿼리를 넣을 수 있다. 이때 조건식은 다음과 같이 작성된다.

B <operation> (서브쿼리)

이때 B는 속성에 해당하며, <operation>은 비교 연산 (=, >, <, in, exists 등)에 해당한다. 이를 바탕으로 where 절에서 subquery는 아래와 같이 사용된다.

select name
from instructor
where salary > (select avg(salary) from instructor);

Select 절에서의 Subquery

Ai 자리에 단일 값을 반환하는 서브쿼리를 넣을 수 있다. 이는 아래와 같이 사용된다.

select name, (select count(*) from teaches where teaches.ID = instructor.ID) as  um_courses
from instructor;


각주