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 |작성자 여유