오라클 - 뷰(View) : 가상 테이블(실제 데이터가 없고, Select문만 가지고 있다)
■ 뷰테이블의 목적
- 긴 SQL구문을 짧은 뷰(View) 가상 테이블로 대체
- 보안상의 이유로 필요한 필드만 읽어낼 수 있는 또 다른 가상 테이블 생성
예제) 보안상의 이유로 관리자 DBA 와 사원 DBA 가 보는 테이블을 다르게 설정한다.
관리자 DBA는 연봉 테이블에 접근
Select 이름, 나이, 연봉 From 사원테이블
사원 DBA는 연봉 필드를 제외한 회원 테이블만 접근
Select 이름, 나이 From 사원뷰 -- 연봉 필드 제외
Select문을 통한 데이터 출력
뷰 생성
As
Select empno, ename, sal From emp where deptno = 10;
뷰 생성 권한 부여 : 최고 관리자인 System으로 접근 후 권한 설정
* 형식 : Grant 권한속성 to 대상 유저;
뷰 관련 데이터 사전 : 사용자 뷰테이블에 대한 정보 확인
하나의 테이블을 사용한 뷰를 통한 데이터 입력
Desc vw_emp1;
별칭 부여
As
Select empno, ename, sal, deptno from emp1;
Select * from vw_emp2;
집계 함수
Create view vw_sal
As
Select deptno, sum(sal) as "SalSum", avg(sal) as "SalAvg"
From emp1
Group By deptno;
Select * from vw_sal;
뷰 삭제
뷰 수정
As
Select 문;
기본 테이블 없이 뷰를 생성하기 위한 Force 옵션
As
Select문;
뷰 활용 : 2개의 테이블에서 조인
2 (
3 IDX Number(2) Primary Key,
4 UserID VarChar2(30) Not Null
5 );
SQL> Create Table UserProfiles
2 (
3 IDX Number(2) Not Null,
4 Email VarChar2(100) Null
5 );
SQL> Insert Into Domains Values(1, 'Administrator');
SQL> Insert Into UserProfiles Values(1, 'a@a.com');
SQL> Insert Into Domains Values(2, 'Guest');
SQL> Insert Into UserProfiles Values(2, 'g@g.com');
SQL> select Domains.IDX, Domains.UserID, UserProfiles.Email
2 From Domains Join UserProfiles
3 On Domains.IDX = UserProfiles.IDX
4 ;
SQL> Create Or Replace View vw_Users
2 As
3 select Domains.IDX, Domains.UserID, UserProfiles.Email
4 From Domains Join UserProfiles
5 On Domains.IDX = UserProfiles.IDX
6 ;
SQL> select * from vw_users;