서브 쿼리와 뷰(view)

Joo·2024년 3월 7일

RDB & SQL

목록 보기
11/24

서브 쿼리

사용 가능 위치
: select 절, from 절, where 절, having 절, order by 절, insert 문의 values 절, update 문의 set 절

위치에 따른 분류

  • 스칼라 서브 쿼리 (select)
    • 하나의 값만 반환
  • 인라인 뷰 (from)
    • 동적 뷰
  • 중첩 쿼리 (where, having) -> nested loop subquery

동작방식에 따른 분류

  • 비연관 서브 쿼리
    • 메인 쿼리를 사용하지 않고, 정보를 메인 쿼리에 제공해줌
  • 연관 서브 쿼리
    • 메인 쿼리 컬럼 사용함 (메인 쿼리가 먼저 수행되고 그 결과를 분석)

반환형태에 따른 분류

  • 단일행 서브 쿼리

    • 아웃풋 1건
    • 단일행 비교 연산자와 사용 (=, >, >=, <, <=, <>)
  • 다중행 서브 쿼리

    • 아웃풋 여러 건
    • 다중행 비교 연산자와 사용
      - 다중행 비교연산자는 단일행 비교연산자로 대체 가능함 (반대는 안 됨)

  • 다중 컬럼 서브 쿼리

    • 아웃풋 여러 컬럼
    • 메인 쿼리 조건절의 여러 컬럼을 동시에 비교 가능
    • 서브 쿼리와 메인 쿼리의 비교하고자 하는 컬럼의 개수와 위치가 동일해야 함
    • SQL server 지원 x


서브쿼리 사용시 주의 사항

  • 서브쿼리는 괄호로 감싸서 사용해야 함
  • 서브쿼리는 단일행 또는 다중행 비교 연산자와 사용 가능함
    • 단일행 비교 연산자의 서브쿼리 결과는 반드시 1건
    • 다중행 비교 연산자의 서브쿼리 결과는 건수와 상관 x
  • 서브쿼리에서는 order by를 사용하지 못 함(?)
    • order by 절은 메인 쿼리의 마지막 문장에 위치해야 함

뷰(View)

가상 테이블

CREATE VIEW 뷰명 AS (
    SELECT ...
);

DROP VIEW 뷰명;

뷰의 장점

  • 독립성 : 테이블 구조가 변경되어도 뷰를 사용하는 응용프로그램은 변경하지 않아도 됨
  • 편리성 : 복잡한 질의를 뷰로 생성함으로써 단순한 질의 작성이 가능함
  • 보안성 : 보안이 필요한 컬럼을 빼고 생성함으로써 사용자에게 정보를 감출 수 있음
profile
적당히 공부한 거 정리하는 곳

0개의 댓글