데이터베이스/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