1. 서브쿼리란
서브쿼리 설명
하나의 SQL 문 안에 포함되어 있는 또다른 SQL문을 말한다.
메인 쿼리가 서브쿼리를 포함하는 종속적인 관계
서브쿼리는 메인쿼리의 칼럼을 모두 사용할 수 있지만, 메인쿼리는 서브쿼리의 칼럼을 사용할 수 없다.
질의결과에 서브쿼리 칼럼을 표시해야 한다면 조인 방식으로 변환하거나 함수, 스칼라 서브쿼리 등을 사용
서브쿼리 사용시 주의 사항
서브쿼리를 괄호로 감싸서 사용한다.
서브쿼리는 단일 행 (SINGLE ROW) 또는 복수 행 (MULTIPLE ROW) 비교 연산자와 함께 사용 가능하다. 단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하여야 하고, 복수 행 비교 연산자는 상관 없다.
서브쿼리에서는 ORDER BY 절을 사용할 수 없다. ORDER BY 절은 SELECT 절에서 오직 한 개만 오기 때문에, 메인쿼리의 마지막 문장에 위치해야 한다.
서브쿼리가 SQL 문에서 사용이 가능한 곳
SELECT절 / FROM 절 / WHERE 절 / HAVING 절 / ORDER BY 절 / INSERT문 VALUES 절 / UPDATE문 SET 절
서브 쿼리의 분류 – 동작방식
종류 | 설명 |
비연관 서브쿼리 |
메인쿼리 칼럼이 가지고 있지 않은 형태의 서브 쿼리 메인쿼리에 값을 제공하기 위한 목적으로 사용 - Access Subquery: 제공자 역할 - Filter Subquery: 확인자 역할 - Early Filter Subquery: 데이터 필터링 역할 |
연관 서브쿼리 |
서브쿼리가 메인쿼리 칼럼을 가지고 있는 형태의 서브쿼리 메인쿼리의 결과를 조건이 맞는지 확인하기 위한 목적으로 주로 사용함 |
서브 쿼리의 분류 – 반환 데이터
종류 | 설명 |
단일 행 서브쿼리 |
실행 결과가 1건 이하인 서브쿼리, 단일 행 비교 연산자와 함께 사용. =,<, <=, >, >=, <> 사용 |
다중 행 서브쿼리 |
실행 결과가 여러 건인 서브쿼리, 다중 행 비교 연산자와 함께 사용. IN, ALL, ANY, SOME, EXISTS가 있다. - IN : 서브쿼리의 결과 중 하나의 값이라도 동일하다는 조건 - ANY : 서브쿼리의 결과 중 하나의 값이라도 만족한다는 조건 - ALL : 서브쿼리의 모든 결과값을 만족한다는 조건 - EXISTS : 서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건, ‘WHERE EXISTS (SELECT ~)’ (항상 연관 서브쿼리로 사용) |
다중 칼럼 서브쿼리 |
실행 결과로 여러 칼럼 반환 주로 메인쿼리의 조건과 비교하기 위해 사용 교하고자 하는 칼럼의 개수와 위치가 동일해야 함 |
그밖의 서브쿼리
스칼라 서브쿼리: 값 하나(한 행, 한 칼럼)를 반환하는 서브쿼리, SELECT절에 사용하는 서브쿼리
2. VIEW(뷰)
뷰의 개념 및 특징
뷰는 실제 데이터는 없지만 테이블이 수행하는 역할을 수행하기 때문에 가상 테이블이라고 한다
테이블은 실제로 데이터를 가지고 있는 반면, View는 실제 데이터를 가지고 있지 않다. 뷰는 단지 뷰 정의만 가지고 있다.
질의에서 뷰가 사용되면 뷰 정의를 참조해서 DBMS 내부적으로 질의를 재작성하여 질의를 수행한다.
뷰 사용 장점
독립성: 테이블 구조 변경 자동 반영. 응용프로그램 변경 X
편리성: 쿼리를 단순하게 작성할 수 있음, 자주 사용하는 SQL문의 형태를 뷰로 생성하여 사용할 수 있음
보안성: 뷰를 생성할 때 칼럼을 제외할 수 있음
뷰 관련 SQL 명령어
뷰 생성: 생성 시 CREATE VIEW 뷰명칭 AS ~ SELECT ~ FROM ~ WHERE ~;
뷰 삭제 DROP VIEW 뷰명칭;
WITH문
서브쿼리를 이용하여 뷰로 사용할 수 있는 구문
명령어: WITH 뷰명 AS (SELECT ~)
'Study > SQLD' 카테고리의 다른 글
2-2장 SQL 활용 - 6절 윈도우 함수 (0) | 2022.07.02 |
---|---|
2-2장 SQL 활용 - 5절 그룹함수 (0) | 2022.07.01 |
2-2장 SQL 활용 - 3절 계층형 질의와 셀프 조인 (0) | 2022.06.30 |
2-2장 SQL 활용 - 2절 집합연산자 (0) | 2022.06.29 |
2-2장 SQL 활용 - 1절 표준 조인 (2) | 2022.06.28 |