데이터베이스/SQL

[SQLD] SQL 활용 (1) - 서브쿼리, 뷰, 집합연산자

qkzkdo 2023. 8. 20. 14:24
728x90

01 서브쿼리(Subquery)

하나의 쿼리 안에 존재하는 또 다른 쿼리이다.

 

서브쿼리는 위치에 따라 다음과 같이나 나눌 수 있다.

SELECT 절 스칼라 서브쿼리(Scalar Subquery)
FROM 절 인라인 뷰(Inline View)
WHERE 절, HAVING 절 중첩 서브쿼리(Nested Subquery)

 

스칼라 서브쿼리

주로 SELECT 절에 위치하지만 컬럼이 올 수 있는 대부분 위치에 사용할 수 있다. 컬럼 대신 사용되므로 반드시 하나의 값만을 반환해야 하며 그렇지 않은 경우 에러를 발생시킨다.

 

인라인 뷰

FROM 절 등 테이블명이 올 수 있는 위치에 사용 가능하다.

 

중첩 서브쿼리

WHERE 절과 HAVING 절에 사용할 수 있다. 중첩 서브쿼리는 메인 쿼리와의 관계에 따라 다음과 같이 나눌 수 있다.

비연관 서브쿼리 메인 쿼리와 관계를 맺고 있지 않음(서브쿼리 내에 메인 쿼리의 컬럼이 존재하지 않음)
연관 서브쿼리 메인 쿼리와 관계를 맺고 있음(서브쿼리 내에 메인 쿼리의 컬럼이 존재)

 

중첩 서브쿼리는 반환하는 데이터 형태에 따라 다음과 같이 나눌 수 있다.

단일 행 서브쿼리 서브쿼리가 1건 이하의 데이터 반환
단일 행 비교 연산자와 함께 사용
ex. =, <, >, <=, >=, <>
다중 행 서브쿼리 서브쿼리가 여러 건의 데이터를 반환
다중 행 비교 연산자와 함께 사용
ex. IN, ALL, ANY, SOME, EXISTS
다중 컬럼 서브쿼리 서브쿼리가 여러 컬럼의 데이터를 반환

 

 

02 뷰(View)

특정 SELECT 문에 이름을 붙여서 재사용이 가능하도록 저장해놓은 오브젝트이다. 

 

 

03 집합 연산자

집합 연산자는 각 쿼리의 결과 집합을 가지고 연산을 하는 명령어이다.

UNION ALL 각 쿼리의 결과 집합의 합집합이다. 중복된 행도 그대로 출력된다.
UNION 각 쿼리의 결과 집합의 합집합이다. 증복된 행은 한 줄로 출력된다.
INTERSECT 각 쿼리의 결과 집합의 교집합이다. 중복된 행은 한 줄로 출력된다.
MINUS/EXCEPT 앞에 있는 쿼리의 결과 집합에서 뒤에 있는 쿼리의 결과 집합을 뺀 차집합이다. 중복된 행은 한 줄로 출력된다.

 

 

 

출처 : 정미나. 「유선배 SQL개발자(SQLD) 과외노트」. (주)시대교육. 2023

728x90