Subquery란?
Subquery는 하나의 쿼리 안에 들어가 있는 다른 쿼리를 말한다.
이 때, SELECT 절에서 사용되는 Subquery는 Scalar Subquery,
FROM 절에서 사용되는 Subquery는 Inline View,
그리고 WHERE 절에서 사용되는 Subquery를 일반적으로 Subquery라고 부른다.
이렇게 Subquery의 위치에 따라 사용 방법이 달라지는데 이를 자세히 알아보자.
Scalar Subquery
SELECT에서 subquery를 사용하면 새로운 쿼리를 통해 값을 불러와 새로운 속성으로 사용할 수 있다.
SELECT
id,
name,
dept_name,
(SELECT AVG(salary) FROM instructor) AS avg_salary
FROM instructor
예를 들어, 위와 같이 SELECT 뒤에 속성 이름 대신 쿼리를 통해 얻은 결과를 하나의 속성으로 사용한다.
이 때, subquery는 집계 함수 등을 사용하여 하나의 결과가 나오도록 해야 한다.
이렇게 SELECT 절에서 사용하는 상수 결과를 반환하는 subquery를 Scalar Subquery라고 한다.
Inline View
FROM에서 subquery를 사용하면 새로운 쿼리를 통해 얻은 데이터에서 다시 데이터를 조회할 수 있다.
SELECT id, name
FROM (SELECT * FROM instructor WHERE salary>80000)
WHERE dept_name='Comp.Sci.'
예를 들어, 위와 같이 FROM 뒤에 테이블명이 아닌 쿼리를 넣어 사용하게 된다.
이렇게 FROM 절에서 사용하여 새로운 데이터 조회를 위해 사용되는 subquery를 Inline View라고 한다.
Subquery
WHERE에서 subquery를 사용할 때는 조회한 결과를 통해 조건을 만들 때 사용하게 된다.
SELECT name
FROM instructor
WHERE dept_name='Comp.Sci.'
AND name IN (SELECT name FROM instructor WHERE salary>80000)
예를 들어, 위와 같이 subquery로 조회한 데이터에 포함되는지 조건을 설정하거나
SELECT name
FROM instructor
WHERE salary > (SELECT AVG(salary) FROM instructor)
위와 같이 상수 값을 가져와 비교 연산을 통해 조건을 설정하여 사용한다.
'Computer Science > Database' 카테고리의 다른 글
[SQL] INNER JOIN, OUTER JOIN, NATURAL JOIN (0) | 2020.06.16 |
---|---|
[SQL] SOME, ALL, EXISTS, NOT EXISTS, UNIQUE, WITH (1) | 2020.06.16 |
[SQL] AVG, MIN, MAX, SUM, COUNT, GROUP BY, HAVING (0) | 2020.06.15 |
[SQL] OR, AND, NOT, IN, IS NULL (0) | 2020.06.15 |
[SQL] UNION, INTERSECT, EXCEPT (0) | 2020.06.15 |