본문 바로가기
데이터베이스

9. view

by 김마리님 2020. 4. 2.

view는 가상의 테이블이다. 

view의 사용 목적은 보안성과 동기화이다. 단순히 테이블의 일정 데이터를 보여주고 싶지 않아서 일부 데이터를 제외하고 복제해서 준다면, 이후 테이블의 변동이 있을 때 변동이 상대에게 적용되지 않을 것이다.

따라서 가상 테이블-원본 테이블 사이에는 동기화가 걸려있다.

 

예시를 보자.

STUDENT 테이블에는 주민과 생일이라는 민감한 데이터가 있다.

따라서, 다음 두 데이터를 뺀 VIEW를 만들어보자.

CREATE OR REPLACE VIEW STUDENT_VIEW
AS
SELECT STUDNO,NAME, ID, GRADE, HEIGHT, WEIGHT, DEPTNO1, DEPTNO2, PROFNO
FROM STUDENT;

정말 빠져있는 테이블이 뷰 폴더 내에 만들어진다.

 

이제 테이블 내에 자료를 넣듯 똑같이 자료를 넣는다.

INSERT INTO STUDENT_VIEW(STUDNO, NAME, ID, GRADE, HEIGHT, WEIGHT, DEPTNO1, DEPTNO2, PROFNO)
VALUES(9916, '이수정', 'SOUL', 4, 156, 50, 301, 201, 1001);

자료가 동기화 된 것을 어떻게 알 수 있을까?

 

삽입된 자료에는 주민번호가 없다. 원본 테이블의 주민에  NULL을 걸러 가보면 다음과 같은 경고문이 걸린다.

 

반응형