1. Overview

 

일반적으로 View를 '가상 Table'이라고 합니다. '가상의 Table'이라고 할까요

View Database 내에 어떠한 Data Row도 저장하고 있지 않습니다. , View Table과 같이 Data를 저장하는 것이 아니라, 단지 Database에는 View에 대한 정의만이 존재하기 때문에 '가상 Table'이라고 부르게 됩니다.

가상의 Table

  • Table과 거의 유사하나 실제 물리적으로 존재하지는 않음
  • View Data는 기본 Table에서 추출되어진 것들임

 

이렇게 Join을 하여 Data를 반환하는 작업이 복잡하거나, 자주 발생이 된다면, 매번 Join문장을 작성하는 것 또한 귀찮은 작업 뿐만이 아니라, 비효율적인 작업일 것입니다.

정규화를 한 Table에 대해서 Join 작업을 하는 것이 귀찮아서 하나의 Table로 묶어서 사용하는 곳을 많이 보았습니다. 

그럼 매번 Join문장을 작성하여야만 하는가. 아닙니다. 이렇게 반복적으로 사용되는 문장이 복잡한 Join문장의 따로 저장하여 그때마다 불러서 사용할 수 있도록 지원을 하는 것이 바로 View입니다.

2. Advantage s of Views

 

그럼 View를 왜 사용할까요? ?

  • 편리성
  • 보안성
  • 복잡성의 은닉
  • 유지, 보수의 편리

 

 

3. Defining Views - Creating Views

 

먼저 View의 정의입니다. 

- Syntax

CREATE VIEW view_name [(column, n.)] 

AS 

     Select_statements

Create 하기 전에 해당 select_statement가 올바르게 작성된 문장인지를 먼저 실행을 하여 결과를 반환 받은 다음에 View를 정의하는 것이 오류를 줄일 수 있는 방법 중에 하나입니다.

 

View를 생성하는 데 있어서는 몇 가지 고려해야 될 사항들이 있습니다. ?

  • Table은 여러 개의 View를 가질 수 있다.
  • View를 하나 이상의 Table이나 View로 만들어 질 수 있다.
  • 명시되지 않은 Column명은 기본 Table Column명을 따름
  • View Column명이 집계함수나, 산술식 또는 상수로부터 유도된 경우 반드시 명시적으로 Column명을 기술
  • Join연산으로 View를 정의할 때, Join Column에 대한 Column명은 반드시 명시적으로 기술우선
  • View를 정의하는데 있어서 select_statement Order by Compute, Compute by, Select Into 문은 사용될 수 없습니다.
  • 임시 Table은 참조할 수 없습니다.
  • Select_list에 최대 1024개의 column만이 올 수 있습니다.

차후 보안부분에서 설명을 드리겠지만, View를 생성할 때, 가급적이면 dbo권한을 가진 사용자 계정으로 생성을 하는 것이 좋습니다.

 

4. Defining Views - Altering and Dropping Views

 

먼저 View의 수정입니다.

- Syntax

ALTER VIEW view_name [(column, n.)] 

AS 

     Select_statements

View를 삭제하는 문장 역시, Table이나 다른 개체들을 삭제하는 문장과 비슷합니다.

 

- Syntax

DROP VIEW view_name

 

5. Locating View Definition Information

Information Schema View 

System Tables

정보

INFORMATION_SCHEMA.TABLES 

Sysobjects

View 이름

INFORMATION_SCHEMA.VIEW_TABLE_USAGE 

Sysdepends

기본 개체 이름

INFORMATION_SCHEMA.VIEWS 

Syscomments

View 정의

INFORMATION_SCHEMA.VIEW_COLUMN_USAGE 

Syscolumns

View에서 정의된 Column

sp_helptext view_name

sp_depends view_name

 

 

 예제)

CREATE VIEW 구문을 붙어서 작성을 하면, 에러 없이 제대로 View를 생성할 수 있습니다.

 

CREATE VIEW 임대품목_테이프_vw 

AS 

SELECT 임대번호, I.테이프일련번호, 가격, I.반납일, 대여여부 

FROM 임대품목 AS I JOIN 테이프 AS T 

                                                       ON I.테이프일련번호 = T.테이프일련번호 

WHERE 대여여부'N'

이렇게 생성을 한 View에 대한 내역은 앞서 말씀을 드렸던 것처럼, sp_helptext syscomments, information_schema.views 등을 통해서 정의내역을 볼 수 있다고 말씀을 드렸는데요. 한번 View의 정의내역을 반환해보도록 하겠습니다

먼저 sp_helptext를 통해서 내역을 반환받아 보도록 하죠.

sp_helptext 다음에 해당 View의 이름을 명시하여 주면,

 

sp_helptext 임대품목_테이프_vw

정의 내역을 반환하게 됩니다

그럼 이번에는 syscomments에서 해당 내역을 반환 받아 보도록 하겠습니다.

 

SELECT * FROM syscomments

맨 마지막에 보시면 해당 정의내역이 syscomments라는 System Table에 정의되어 있는 것을 볼 수 있습니다. 마지막으로 information_schema.views에 대한 내역도 반환해보도록 하겠습니다.

 

SELECT * 

FROM INFORMATION_SCHEMA.VIEWS 

WHERE TABLE_NAME = '임대품목_테이프_vw'

 

 

 


+ Recent posts