본문 바로가기
DB/DBMS

DBMS - VIEW

by 코딩하는 랄로 2023. 8. 17.
728x90

VIEW란

DBMS에서 VIEW는 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상테이블이다. 실무에서 많이 사용하는 문법 중 하나이다. 

 

가상테이블이기 때문에 저장장치 내에서는 물리적으로 존재하지 않지만 사용자에게는 있는 것처럼 간주된다. 뷰를 사용하는 이유로는 독립성, 편리성, 보안성이 있다.

 

  • 독립성 : 데이터가 다른 곳에서 변경되지 않도록 논리적 독립성을 제공
  • 편리성 : 가상 테이블인 뷰를 만들 때, 원하는 데이터에 대한 정보를 추출, 생성하여 뷰를 형성하였기 때문에 뷰에 쿼리문을 짧게 사용이 가능
  • 보안성 : 뷰를 사용할 때는 짧은 쿼리문을 사용 -> 기존의 긴 쿼리문(뷰를 생성할 때 사용한)은 알기 어렵다.

 

 

VIEW 특징

  • 뷰는 기본테이블로부터 유도된 테이블이기 때문에 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다.
  • 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
  • 데이터의 논리적 독립성을 제공할 수 있다.
  • 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다.
  • 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법으로 사용할 수 있다.
  • 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신, 연산이 가능하다.
  • 일단 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
  • 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

 

 

VIEW 장 단점

장점

  • 논리적 데이터 독립성을 제공한다.
  • 동일 데이터에 대해 동시에 여러사용자의 상이한 응용이나 요구를 지원해 준다.
  • 사용자의 데이터관리를 간단하게 해준다.
  • 접근 제어를 통한 자동 보안이 제공된다.

 

단점

  • 독립적인 인덱스를 가질 수 없다.
  • ALTER VIEW문을 사용할 수 없다. 즉 뷰의 정의를 변경할 수 없다.
  • 뷰로 구성된 내용에 대한 삽입, 삭제, 갱신, 연산에 제약이 따른다.

 

 

VIEW 예시

다음은 기존 고객(CUSTOMER) 테이블이다.

ID NAME BIRTH_YEAR PHONE_NUMBER
123 홍길동 1998 010-1234-5678
157 이순신 2000 010-8765-4321

이 테이블을 통해 BIRTH_YEAR을 빼고 나이를 넣은 가상테이블을 만들고 싶다면, 다음의 쿼리문을 사용할 수 있다.

CREATE VIEW CUSTOMER_AGE 
AS (
	SELECT C.ID, C.NAME, (2023 - BIRTH_YEAR + 1) AGE, C.PHONE_NUMBER 
    	FROM CUSTOMER C
);

 

이를 실행해보면 다음과 같은 가상 테이블 CUSTOMER_AGE을 생성할 수 있다.

ID NAME AGE PHONE_NUMBER
123 홍길동 26 010-1234-5678
157 이순신 24 010-8765-4321

 

 

 

2023.08.20 - [Programming 공부/DBMS] - DBMS - 프로시저(Procedure)

 

DBMS - 프로시저(Procedure)

프로시저 - PL/SQL 프로시저는 함수라는 의미로 programming 언어에서 흔히 쓰이는 function과 기능이 유사하다. 프로시저 문법을 쓰기 위해서는 PL/SQL문에 대해서 알아야 한다. PL/SQL : Procedural Language Exte

codingralro.tistory.com

 

728x90

'DB > DBMS' 카테고리의 다른 글

DBMS - 프로시저(Procedure)  (0) 2023.08.20
DBMS - DCL  (0) 2023.08.17
DBMS - JOIN  (0) 2023.08.17
DBMS - Optimizer, Hint  (0) 2023.08.15
DBMS - GRUOP BY, SUB QUERY  (0) 2023.08.15