본문 바로가기
IT Study/SQL

[SQLD] 서브 쿼리(Subquery) 와 뷰(VIEW)

by 하람 Haram 2026. 3. 3.
728x90

SubQuery

함수가 들어 갈 수 있는 위치에는 그 위치에 맞는 결과를 반환하는 또 다른 독립적인 SQL문을 넣는 것

- 서브쿼리를 품고있는 쿼리를 메인쿼리 (Main Query)라 부른다

 

 

위치에 따른 서브 쿼리 구분

- 스칼라 서브 쿼리

    - SELECT문의 칼럼 입력 위치

    - 스칼라 서브쿼리의 결과는 하나의 칼럼만 가져야 한다

 

 

- 인라인 뷰

    - FROM절의 테이블 입력 위치

    - View : 기존의 테이블 로부터 파생되어 동적으로 생성되는 테이블

    - 마찬가지로 인라인 뷰 역시 쿼리 실행 시 생성되는 동적 테이블 이다.

    - 테이블 전체가 안인 일부분만 불러와 사용하여 비교횟수를 줄이는 것과 같은 이점이 있음

 

 

- 중첩 서브쿼리

    - WHERE절, HAVING절의 칼럼 또는 테이블 입력 위치

    - 쿼리 안에 다른 쿼리가 중첩되어 들어간 경우를 지칭

    - 반환하는 값이 하나가 아니며 다양한 반환값을 가질 수 있다 (단일행, 다중행, 다중칼럼)

    - 메인쿼리의 칼럼 사용 여부에 따른 구분가능하다

        - 연관(Correlated) 서브 쿼리

            - 메인쿼리의 칼럼을 서브쿼리에서 사용

        - 비연관(Un-Corelated) 서브 쿼리

            - 메인쿼리의 칼럼을 서브쿼리에서 사용하지 않음

 

 

 

 

VIEW (뷰)

- 실제의 테이블을 참조하여 생성하는 논리적인 가상의 테이블

- 해방 뷰를 참조할 때 동적으로 메모리에 생성

    - 테이블은 실제로 디스크에 저장

- 복잡하고 긴 쿼리를 뷰로 만들어 두고 사용하면 쿼리가 단순해짐

- 외부에 노출하면 안되는 칼럼을 제외하고 뷰를 생성하여 제공하여 보안성 확보

- 자신만의 인덱스 생성이 불가능 하며 삽입/수정/삭제에 제약이 있다

- DDL 코드를 통해 생성 및 제거 (CREATE VIEW, DROP VIEW)

728x90