728x90
SMALL
- 이번에는 서브쿼리, 뷰, 집합 연산자에 대한 SQL 활용 부분을 알아보겠습니다!
서브쿼리란?
- 서브쿼리는 SQL 문 내에서 다른 SQL 문을 포함하여 사용하는 기법으로, 데이터를 조회하거나 조작할 때 유용하게 사용됩니다.
- 서브쿼리의 다양한 유형과 활용 방법에 대해 알아보겠습니다.
✅ 스칼라 서브쿼리
- 스칼라 서브쿼리는 단일 행과 단일 컬럼을 반환하는 서브쿼리입니다.
- 주로 SELECT 절에서 사용되며, 단일 값으로 처리됩니다.
- 예를 들어, 특정 제품의 평균 가격보다 높은 가격의 제품을 찾을 때 스칼라 서브쿼리를 활용할 수 있습니다.
SELECT product_name, price
FROM products
WHERE price > (SELECT AVG(price) FROM products);
✅ 인라인 뷰
- 인라인 뷰는 FROM 절 내에서 사용되는 서브쿼리로, 일시적인 테이블을 생성해 쿼리의 결과를 활용합니다.
- 복잡한 조인이나 데이터 집계가 필요한 경우 유용하게 사용됩니다. ORDER BY 절도 사용 가능합니다.
SELECT a.product_name, a.price
FROM (SELECT product_name, price FROM products WHERE price > 1000) a
WHERE a.price < 2000;
✅ 중첩 서브쿼리의 분류 2가지!
- 중첩 서브쿼리는 메인 쿼리 내부의 WHERE 절과 HAVING 절에서 다른 테이블을 참조하여 조건을 지정하는 서브쿼리입니다.
1. 메인 쿼리와 어떤 관계냐
비연관 서브쿼리(Non-correlated Subquery): 비연관 서브쿼리는 메인 쿼리와 독립적으로 실행되며, 메인 쿼리의 컬럼이나 변수를 참조하지 않습니다. 즉, 쉽게 말해 서브쿼리가 메인 쿼리의 컬럼을 가지지 않는 경우입니다.
연관 서브쿼리(Correlated Subquery): 연관 서브쿼리는 메인 쿼리의 컬럼 값을 참조하여 실행되는 서브쿼리입니다. 메인 쿼리의 각 행마다 서브쿼리가 실행되어, 해당 행의 데이터를 기반으로 조건을 평가하고 결과를 반환합니다.
2. 어떤 데이터를 반환하냐
단일 행 서브쿼리(Single-Row Subquery): 단일 행을 반환하는 서브쿼리로, 결과값이 하나의 행으로 제한됩니다. 이 유형의 서브쿼리는 =, <, > 등의 비교 연산자와 함께 사용되어, 특정 조건에 대한 단일 값 비교에 유용합니다.
다중 행 서브쿼리(Multi-Row Subquery): 둘 이상의 행을 반환하는 서브쿼리로, IN, ANY, ALL 등의 연산자와 함께 사용됩니다. 다중 행 서브쿼리는 메인 쿼리의 조건과 여러 행을 비교할 때 사용되며, 복수의 결과값에 대한 조건을 처리할 수 있습니다.
다중 컬럼 서브쿼리(Multi-Column Subquery): 하나 이상의 컬럼을 반환하며, 메인 쿼리의 조건과 여러 컬럼을 동시에 비교할 수 있습니다. 다중 컬럼 서브쿼리는 복잡한 조건을 만족하는 특정 데이터 집합을 조회할 때 유용하게 사용됩니다.
데이터베이스에서 뷰(View)란?
- 특정 SELECT 문에 이름을 붙여 재사용 가능하게 저장한 데이터베이스 오브젝트를 의미합니다.
- 사용자가 직접 데이터를 저장하는 것이 아니라, 데이터 조회를 위한 쿼리문을 저장함으로써, 필요할 때마다 해당 뷰를 통해 데이터를 조회할 수 있습니다.
- 이는 데이터의 보안성, 독립성, 그리고 편리성을 크게 향상시킵니다.
✅ 뷰의 특징 3가지!
- 보안성: 보안이 필요한 컬럼을 가진 테이블일 경우 해당 컬럼을 제외한 별도의 뷰를 생성하여 제공함으로써 보안을 유지할 수 있습니다.
- 독립성: 테이블 스키마가 변경되었을 경우 어플리케이션은 변경하지 않고 관련 뷰만 수정합니다.
- 편리성: 복잡한 쿼리 구문을 뷰명으로 단축시킴으로써 가독성을 높이고 편리하게 사용할 수 있습니다.
집합 연산자는 또 뭘까?
- 데이터베이스에서 집합 연산자는 두 개 이상의 쿼리 결과를 하나의 결과로 결합하는 데 사용됩니다.
- 다음은 주요 집합 연산자와 그 사용법에 대한 설명입니다.
✅ UNION / UNION ALL
1. UNION
- 두 개 이상의 SELECT 문의 결과를 결합하여 중복 없는 결과 집합을 반환합니다.
- 각 SELECT 문은 동일한 수의 컬럼을 가져야 하며, 데이터 타입이 호환되어야 합니다.
2. UNION ALL
- UNION과 유사하지만, 중복된 결과를 제거하지 않고 모든 결과를 포함합니다.
- 성능상 처리 속도가 UNION보다 빠를 수 있습니다.
✅ INTERSECT
- 두 개의 SELECT 문 결과에서 겹치는, 즉 공통된 결과만을 중복 제거하여 반환합니다.
- 공통된 부분의 헤더값이 겹치는 경우, 헤더값은 첫 번째 쿼리를 따라갑니다.
✅ MINUS / EXCEPT
- 첫 번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과를 제외한 나머지를 반환합니다.
- 데이터베이스 시스템에 따라 MINUS 또는 EXCEPT 키워드가 사용됩니다.
728x90
LIST
'자격증 > SQLD' 카테고리의 다른 글
SQL 활용 (3) (0) | 2024.03.05 |
---|---|
SQL 활용 (2) (0) | 2024.03.05 |
SQL 기본 (4) (2) | 2024.02.26 |
SQL 기본 (3) (3) | 2024.02.26 |
SQL 기본 (2) (0) | 2024.02.20 |