1. 뷰(View) 란?
기존 테이블로부터 생성(정의)되는 가상의 테이블
- 기반 테이블들에 대한 하나의 질의문(query)으로 정의된다.
( but 실제로 질의를 실행하는 것은 아님 ! 질의 그 자체가 뷰임. 물리적인 저장공간 없음)
- 뷰는 기반 테이블과 동등하게 사용된다.
< 기능 >
- 특정 사용자에게 테이블 내용 중 일부를 숨길 수 있기 때문에 데이터에 대한 접근 제한과 보안성을 높일 수 있다.
- 질의의 결과를 뷰로 만들어서 사용하면 복잡한 질의를 간단히 표현할 수 있다.
2. 뷰 생성 방법
- <SELECT문> : 뷰 생성에 사용될 질의문
- OR REPLACE 를 추가하면 <뷰이름> 과 같은 뷰가 이미 존재하는 경우, 기존의 뷰를 삭제하고 새로 생성한다.
3. 뷰 생성 권한
: 대부분의 DBMS에서 일반 사용자 계정에서는 뷰 생성 권한이 없다.
: 관리자가 특정 사용자에게 권한을 부여해야 뷰를 생성할 수 있다.
4. 직접 실습해보기
- SQLDevelper 에서 실습해 보기로 하자
1) localhost(관리자 계정) 에서 scott(사용자 계정)으로 뷰 생성 권한을 부여한다.
2) V_TAKES 라는 이름의 뷰 생성하기
참고) TAKES 테이블은 이렇게 생겼다.
3) v_takes 뷰를 이용하여 특정 학번의 학생 정보를 검색
질의결과)
5) INSERT문도 실행시켜보기
실행결과)
Q) 원래 TAKES 테이블에도 값이 추가가 될까?
A) Yes! 추가되지 않은 GRADE 열의 값은 null 이 들어간다. 아래 결과 확인
5. 읽기 전용 뷰
: INSERT, DELETE, UPDATE 와 같은 데이터 조작 언어(DML)의 사용을 막고 싶을 때에는
WITH READ ONLY 키워드를 추가해준다. (SELECT 는 가능)
6. 뷰 삭제
7. 실습해보기 두번째
- 컴퓨터공학과 학생들의 정보만 추출하여 뷰를 생성한다.
** 문제발생) 기본키인 dept_id 가 select 되지 않았기 때문에 insert문을 실행시킬 수 없다.
'Computer Science > Database' 카테고리의 다른 글
무결성과 보안 2) 데이터베이스 보안 : 권한 부여 (0) | 2020.11.26 |
---|---|
무결성과 보안 1) 무결성 제약 (0) | 2020.11.25 |
SQL 5) 중첩 질의 (서브쿼리 subquery) (0) | 2020.10.21 |
SQL 4) 집합 연산, 외부 조인, 집계 함수 (0) | 2020.10.20 |
SQL 3) DML : select문 (0) | 2020.10.20 |