서브쿼리란 하나의 sql문 안에 포함되어 있는 또 다른 sql문을 말한다
sql 내에서 또 다른 select 절을 사용하는 것!
서브쿼리를 포함하고 있는 쿼리를 외부 쿼리, 부모 쿼리, 메인 쿼리라고 부르고 서브 쿼리를 내부 쿼리, 자식 쿼리라고 부른다.
서브쿼리는 괄호로 감싸서 표현한다.
ex)
SELECT name, height
FROM userTbl
WHERE height > (SELECT height
FROM userTbl
WHERE name in ('김경호')
);
서브쿼리는 select절을 사용하는 위치에 따라 명칭이 달라진다.
사용 위치
|
명칭
|
SELECT 절
|
스칼라 서브쿼리 (Scalar Subquery)
|
FROM 절
|
인라인 뷰 (Inline View)
|
WHERE 절
|
중첩 서브쿼리 or 서브쿼리
|
- 스칼라 서브쿼리 (Scalar Subquery)
select절에서 사용하는 서브쿼리
scalar는 '한 번에 한 가지만 처리하는' 이라는 뜻을 가지고 있다. 즉, scalar subquery에 의해 나오는 결과는 '하나의 행'이어야 한다.
일치하는 값이 없으면 NULL을 반환한다.
SELECT first_name , (SELECT department_name
FROM department d
WHERE d.department_id = e.department_id)
department_name
FROM employee e
ORDER BY first_name;
2. 인라인 뷰 (Inline View)
from절에서 사용하는 서브쿼리
인라인 뷰는 하나의 임시 테이블이라고 생각하면 된다.
메인 쿼리에서는 인라인 뷰에서 select한 컬럼만 사용 가능하다.
3. 중첩 서브 쿼리
where절에서 사용하는 서브쿼리
서브쿼리의 결과가 단일행이면 단일행 서브쿼리, 복수행이면 복수행 서브쿼리라 부른다.
참고
'SKKU SW > Database' 카테고리의 다른 글
[DataBase] unique key, primary key (0) | 2024.03.06 |
---|---|
[DataBase] Join (Inner Join / Outer Join / Natural Join) (0) | 2024.03.06 |
[DataBase] PostgreSQL 설치 & 명령어 (0) | 2024.03.03 |