1. VIEW 테이블의 정의


테이블에 대한 제한을 가지고 테이블의 일정한 부분만 보일 수 있는 가상의 테이블로서 VIEW TABLE은 실제 자료를 갖지는 않지만, VIEW을 통해 Table을 관리 할 수 있다.

하나의 테이블에 View의 개수는 제한이 없다.


2. VIEW 테이블의 목적

권한을 제한하여 만들수 있다.


*사용자에게 테이블에 대해 사용할 수 있는 모든 권한을 부여시는 다음과 같이 쓴다,

*권한부여시) GRANT SELECT/INSERT ON 테이블명 TO 사용자

*그러나, 일반적으로 사용자에게 테이블에 관한 모든 권한은 주지 않으며..따라서,, 제한적으로 권한부여를 해 주기 위해 View명령사용한다.

*실데이타는 가지고 있지않으며, 어떤 테이블을 제한적으로 다른 사용자가 볼수 있도록 해준다.


두개의 테이블을 join 할 경우 자료로 View 테이블로 만들어 작업의 효율성을 높일수 있다.

(복잡한 Query를 간단하게 해준다.) 여러 개의 테이블이 있을 때 view를 만든후, 쉽게 자료를 여러 개의 테이블로부터 볼 수 있다.


3. 형식

Create View view테이블명 AS Select …..Where …..

Drop View view테이블명 - :삭제

Alter View view테이블명 - :수정


4. 제한 조건

View을 통한 자료의 transation (DELETE./UPDATE/…)이 가능하게 하려면

1. Group By ,Distinct, Group 함수등을 이용한 View가 아니어야 한다.

2. 하나의 테이블에서 생성된 View이어야한다.

수식이 사용된 필드는 수정, 삭제 할 수 없다.

view을 통한 삽입이 가능하려면 NOT NULL 로 설정된 필드가 VIEW에 모두 포함되어야 한다.

view 생성시 Order By는 사용할 수 없으며, Group By, Having조건을 사용할 수 있다.


SQL> Create View v_sa5 as select saname,sajob,deptno from sawon where deptno=10;

SQL> update sawon set deptno=20 where saname='이상아'; - UPDATE 의 경우

1 개의 행이 갱신되었습니다.

SQL> Grant select on V_sa5 to scott;

권한 부여 성공입니다.


Connect Scott에서 View Table 보기

SQL> select * from Angle.V_sa5;


SQL> Create table v_sa6 as select saname,sapay,sapay*2 as bouns from sawon where deptno=20;

**** 필드명을 안 써주었을 경우 Error 가 발생


SQL> Create table v-sa6 (x,y,z) as select saname,sapay,sapay*2 from sawon where deptno=20;

****원하는 필드명으로 Change할 수 있다.


원하는 필드명으로 JOIN을 할 경우

SQL> Create view v_sa7(부서명,이름,직책,급여) as select dname,saname,sajob,sapay from sawon,dept


where dept.deptno=sawon.deptno;

원하는 필드명으로 join 과 group by 을 사용했을 때

SQL> Create View v_sa8(부서명,인원수,급여합계) as select dname,count(*),sum(sapay) from sawon,deptwhere sawon.deptno=dept.deptno group by dname;

[출처] View 테이블 Mssql |작성자 여유

Posted by 아로스

아로스

달력