Cs

6. 데이터베이스 뷰(view)

ITSEONG 2022. 3. 21. 21:36

뷰(View)는 하나 이상의 테이블을 합하여 만든 가상의 테이블이다. 합한다는 말은 앞서 배운 SELECT 문을 통해 얻은 최종 결과를 뜻하며, 뷰는 이러한 결과를 가상의 테이블로 정의하여 실제 테이블처럼 사용할 수 있도록 만든 데이터베이스 개체이다.

 

뷰의 장점

  • 편리성 : 여러 테이블에서 데이터를 가져와 하나의 테이블로 정의함으로써 질의 작성이 간단하게 된다. 또 미리 작성된 질의를 뷰로 정의해 두면 질의 재사용이 가능하다.
  • 보안성 : 원본 테이블에서 보안이 필요한 속성을 제외하고 새로운 테이블을 정의하여 사용자에게 제공함으로써 데이터 보안성을 높인다.
  • 논리적 데이터 독립성 : 뷰를 정의하여 응용 프로그램이 사용하게 하면 개념스키마에 정의된 테이블 구조가 변경되어도 응용 프로그램의 변경을 막아 주기 때문에 논리적 데이터 독립성을 제공한다.

뷰는 테이블처럼 사용할 수 있지만, SELECT 문을 제외한 일부 물리적인 테이블의 갱신 작업을 수행하는데 제약이 있다. INSERT, UPDATE,DELETE 등의 DML 작업은 경우에 따라 수행되지 않는다. 

 

뷰의 생성

뷰는 실제 SQL문에서 테이블과 동일하게 사용할 수 있는 데이터베이스 개체이다. 뷰는 사용자가 직접 정의하는 과정을 거치는데, 뷰의 정의를 뷰의 생성이라고도 한다.

뷰를 생성하는 문법

CREATE VIEW 뷰이름[(열이름,[,...n])]
AS <SELECT 문>

위 문법에서 '뷰이름'은 생성할 뷰의 이름은 말하며, '열이름'은 뷰에서 사용할 열의 이름을 말한다. 열이름과 SELECT 문에서 추출하는 속성은 일대일로 대응된다. SELECT 문은 뷰를 정의하는 역할을 한다. 뷰는 실제 데이터가 저장되는 게 아니라 뷰의 정의가 DBMS에 저장되는 것이다.

 

뷰의 생성

물리적인 테이블의 수정 작업과 같이 뷰도 필요에 따라 정의된 SQL문의 수정이 필요하다. 뷰의 수정은 CREATE VIEW 문에 OR REPLACE 명령을 더하여 작성한다.

뷰를 수정하는 문법

CREATE OR REPLACE VIEW 뷰이름[(열이름,[,...n])]
AS SELECT 문

 

뷰의 삭제

여러가지 이유로 뷰가 필요 없게 된 경우에는 DROP문을 사용하여 뷰를 삭제한다.

DROP VIEW 뷰이름 [,...n];

 

시스템 뷰

오라클을 포함한 모든 DBMS에서는 데이터베이스 개체(테이블, 함수, 뷰 등)나 시스템의 통계 정보 등을 사용자가 직접 확인할 수 있도록 시스템 뷰를 만들어 제공한다. 시스템 뷰는 데이터 딕셔너리 뷰(Data Dictionary View), 시스템 카탈로그(System Catalog)라고도 하며, DBMS 관련 정보나 테이블 형태로 만들어 실시간으로 제공한다. 사용자들은 시스템 뷰를 참조하여 데이터베이스 튜닝이나 기타 문제들을 해결할 수 있다. 

시스템 뷰는 SELECT 명령으로 조회할 수 있다. DBMS별 메뉴얼을 참조하여 필요한 뷰를 찾아 사용하면된다.

SELECT * FROM User_Objects;
반응형