[DB] View

무1민·2023년 4월 12일
0

데이터베이스

목록 보기
3/11

View

  • 데이터베이스에 존재하는 '가상의 테이블'
  • 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지는 않음
  • 테이블처럼 물리적으로 저장되는 것은 아님
  • join이나 subquery와 같이 여러 개의 테이블을 참조하여 데이터를 조회할 때 번거로움을 줄일 수 있음
  • 단, MySQL에서 View는 단지 다른 테이블이나 View에 있는 데이터를 보여주는 역할만 수행.
  • View와 Table의 차이점은, Table은 실질적인 데이터가 있지만 View는 데이터가 없고 SQL만 저장한다.

View 장점

  • 특정 사용자에게 테이블 전체가 아닌 필요한 필드만(보안성) 보여줄 수 있음.
    • DBMS의 사용자별 권한 관리 기능을 통해 사용자가 테이블에 직접적인 접근을 하지 못하도록 막을 수 있음.
  • 복잡한 쿼리를 단순화해서 사용할 수 있음.
  • 쿼리를 재사용할 수 있음.
  • 여러 방법의 데이터 조회에 알맞은 다양한 구조의 데이터 분석 기반을 구축할 수 있음.
    • 기존 테이블 구조를 변경하지 않음.

View 단점

  • 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐
  • View는 자신만의 인덱스를 가질 수 없음.

View data 변경

  • update 된다.
  • View를 조회하게 되면, 옵티마이저에서 View를 생성할 때 저장해 놓은 Select문이 실행되는 것이기 때문에 View이 data또한 update가 된 것처럼 보임

View 종류

  • 단순 뷰 (Simple View)
    • 하나의 테이블로 생성
    • 그룹 함수의 사용이 불가능.
    • distinct 사용 불가능.
    • DML 사용 가능
  • 복합 뷰 (Complex View)
    • 여러개의 테이블로 생성(join)
    • 그룹 함수의 사용이 가능
    • distinct 사용 가능
    • DML 사용 불가능
  • 인라인 뷰 (Inline View)
    • 일반적으로 가장 많이 사용
    • from 절 안에 SQL문장이 들어가는 것을 인라인 뷰라 볼 수 있음.

Simple View

  • 단순 뷰에서 DML 명령어 사용이 불가능한 경우.
    • View 정의 시 포함되지 않은 컬럼 중 not null 제약조건이 지정되어 있는 경우
    • 산술 표현식을 포함한 컬럼이 포함되어 있는 경우
    • distinct를 포함한 경우
    • 그룹 함수나 group by 절을 포함한 경우

View 생성

  • create문 사용
create or replace view 뷰이름
as
select 필드이름 1, 필드이름2, ...
from 테이블이름
where 조건;
  • View는 원본 테이블의 이름과 같은 이름을 사용할 수 없음
  • 뷰이름에 해당하는 View가 존재하면 replace, 존재하지 않으면 create가 일어 남.

View 수정

alter view 뷰이름
as
select 필드이름1, 필드이름2, ...
from 테이블이름;

View 삭제

drop view 뷰이름;
profile
야호

0개의 댓글