DataBase
서브 쿼리 종류
Beencle
2023. 3. 22. 10:18
서브 쿼리의 종류는 3가지로 나뉘는데 사용하는 위치에 따라 나뉜다.
첫번째, SELECT절에서 사용되는 스칼라 서브 쿼리
스칼라 영어로 한번에 한가지라는 뜻으로 하나의 행을 반환하는 서브쿼리이다.
SELECT *,
(SELECT dept_name FROM Departments d WHERE d.dept_id = e.dept_id) -- 이 부분이 스칼라 서브쿼리
FROM Employees e
이처럼 Employees의 테이블의 없는 컬럼을 다른 테이블과 조인하여 사용이 가능하다.
두번째, FROM절에서 사용되는 인라인 뷰
인라인 뷰는 FROM절에서 사용되는 서브쿼리로 하나의 임시 테이블을 만든다고 생각하면 된다.
그렇게 때문에 메인 쿼리에서는 인라인뷰(서브쿼리)에서 SELECT한 컬럼만 사용이 가능하다.
SELECT e.*, d.dept_name
FROM Employees e,
(SELECT dept_id, dept_name FROM Departments) d -- 이 부분이 인라인뷰
WHERE e.dept_id = d.dept_id
위의 예제에서는 하나의 테이블과 인라인 뷰를 사용하여 조인하였기 때문에 두 테이블의 컬럼을 모두 사용한다.
세번째, WHERE절에서 사용되는 중첩 서브쿼리
WHERE절에서 사용되는 서브쿼리는 가장 일반적으로 단일행 서브쿼리, 다중행 서브쿼리로 나뉜다.
이 둘의 관한 글은 이전 작성하였으니 참고하면 된다.
[단일행 서브쿼리]
SELECT e.*, d.dept_name
FROM Employees e, (SELECT dept_id, dept_name FROM Departments) d
WHERE e.dept_id = d.dept_id
[다중행 서브쿼리]
SELECT *
FROM Employees e
WHERE e.dept_id IN (SELECT d.dept_id FROM Departments d WHERE dept_name IN ('총무', '개발'));