티스토리 뷰

뷰(VIEW)란?
는 사용자에게 접근이 허용된 자료만을 제한적 으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 가지는 가상 테이블 이다.

 

간단한 예시(employees)를 통해 이해를 돕도록 하겠습니다.

 

SELECT * FROM employees;

 

 

 

 

 

 

 

 

다음과 같은 테이블에서 사용자에게 employees의 이름(first_name)성(last_name) 그리고 성별(gender) 만을 제공하고 싶습니다.

하지만 원치 않게도 생일(birth_date)입사일(hire_date) 까지도 노출하게 됩니다.

(만약, 생일이 주민등록번호라면 공개하면 안되는 것과도 같죠.)

보안상 문제가 생길 수 있는데 이를 해결 하기 위한 방법이 뷰(VIEW) 입니다.

 


 

백문이 불여일견 바로 를 사용해서 원하는 데이터만을 제공해 보도록 하겠습니다.

 

CREATE VIEW view_employees AS SELECT first_name,last_name,gender FROM employees;

* CREATE VIEW 뷰이름(사용자정의) AS SELECT 원하는 컬럼 FROM 가져올테이블;

 

6번째 줄의 

select * from view_employees;

를 통하여 마치 새로운 테이블이 생성된 것 처럼 보입니다.

 

하지만 이는 새로운 테이블이 생성된 것이 아닙니다.

그저 보여주기 위한 가상의 테이블 일 뿐이죠!

 

사실은 view_employees를 SELECT 문으로 실행했을 때, 4번째 줄의

CREATE VIEW view_employees AS SELECT first_name,last_name,gender FROM employees;

명령문을 실행했을 뿐이니까요!

 

이 실행을 통해 우리는 알 수 있는 것이 있습니다.

 

뷰는 가상의 테이블이다!

그리고 뷰는 원하는 데이터만 보여주고 다른 데이터들은 안전하게 보호할 수 있다.

 

한번의 실습으로 이것만큼은 기억하기 쉽겠죠?! (난 붕어라 기억 잘 못함..)

하지만 이 외에도 많은 뷰의 특징들이 있습니다.


 

뷰(VIEW)의 특징
- 뷰는 데이터의 논리적 독립성을 제공할 수 있다.
- 뷰는 가상 테이블이기 때문에 물리적으로 구현되어 있지 않다.
- 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하다.
- 뷰에 나타나지 않은 데이터를 안전하게 보호할 수 있다.
- 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제 된다.

 


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

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

 


이처럼 뷰(VIEW) 를 사용하는 가장 큰 이유는 복잡한 쿼리문을 단순화 해서 원하는 결과만 쉽게 조회 할 수 있고,

원치 않는 데이터에 대해서 감출 수 있기 때문에 보안에 유리하다 라는 장점이 있습니다.

 

 

마지막으로 테스트가 끝났다면, 뷰도 삭제해주세요 ^-^!

DROP VIEW 뷰이름;

 

DROP VIEW view_employees;

 

댓글
공지사항
글 보관함
최근에 올라온 글
최근에 달린 댓글