요약 |
object table/view/index/sequence/synonym |
view정의 논리적 가상 테이블 |
생성 create view view명 as subquery문 |
table비교 view는 하나의 창문 |
view의 장점 공간 효율,보안 |
특징 view가 보는 table의 변경 된다. |
view 수정 create or replace view view명 as subquery |
view 종류 |
|
|
|
OBJECT란? |
OBJECT의 종류로는 |
Table |
view |
sequence |
index |
sysnonym 등이 포함된다. |
---------------------------------------------------------------------------------------------------------------------------------- |
VIEW의 정의 |
물리적 테이블에 근거한 논리적 가상테이블 역할 |
(select문에 이름 붙여놓은 것이지만 마치 테이블처럼 역할을 하게 되는것.) |
----------------------------------------------------------------------------------------------------------------------------------- |
view 생성? |
create view view명 |
as |
subquery문 |
create view empvw30 |
as |
select empno,ename,sal,deptno |
from emp |
where deptno=30; |
|
*view를 만들기 전에 |
grant create view to scott; <-view를 만들기 위해선 일반 사용자는 관리자 계정에서 view를 만들 수 있는 권한을 부여해야한다. |
---------------------------------------------------------------------------------------------------------------------------------- |
view와 table 비교 |
view와 table은 매우 유사하지만 view는 하나의 창문이다. 세상의 전체를 보여주지 않고 창문 틀에 제한된 것만 보여주는 것처럼 |
VIEW를 통해 주어진 조건에 대한 내용만 보도록하는 WHERE절이 있는 SELECT문과 동일한 출력값을 갖는다. |
|
EX) ^ |
SCOTT>select text |
2 from user_views |
3 where view_name='EMPVW30'; |
|
TEXT |
------------------------------------------------------ <-VIEW EMPVW30의 실체.SELECT문이다. |
|
select empno,ename,sal,deptno |
from emp |
where deptno=30 |
|
>SELECT* |
FROM EMPVW30; 에서 EMPVW30=select empno,ename,sal,deptno |
from emp |
where deptno=30 과도 같다 |
|
마치 SUBQUERY문처럼 실행된다. |
|
SCOTT>SELECT* SELECT* |
2 FROM(SELECT EMPNO,ENAME,SAL,DEPTNO = FROM EMPVW30; |
3 FROM EMP |
4 WHERE DEPTNO=30); |
|
--------------------------------------------------------------------------------------------------------------------------- |
SUBQUERY를 써서 그냥 출력하면 되는데 VIEW를 쓰는 이유는? |
1)공간 효율. |
그냥 조건문을 사용하면 만약 정보를 사용하고자 하는 TABLE의 용량이 크면 쓸데없이 테이블이 하나더 만들어져 그 명령어 자체에 의해 |
DB의 공간을 많이 차지하게 된다. |
VIEW의 경우에는 그저 글자 몇자만 저장하기 때문에 공간을 차지하는것이 적어 더 효율적이다. |
|
2)보안. |
직접적인 정보가 들어있는 TABLE의 접근 권한을 제한시키면서 그 테이블을 사용할 수 있다. |
|
3)액세스의 단순화. |
복잡한 JOIN등을 번거롭게 하지않는다. |
ex)create view emp_dept |
as |
select e.ename,d.dname |
from emp e, dept d |
where e.deptno=d.deptno; |
|
|
|
select*from emp_dept; |
--------------------------- |
|
-------------------------------------------------------------------------------------------------------------------------- |
view의 특징 |
VIEW를 통해 기존의 테이블을 변경해도 변경이 된다. |
SCOTT>update empvw30 |
2 set sal=1250 |
3 where ename = 'MARTIN'; |
|
VIEW 자체는 저장공간이 없다. VIEW를 통해 보는테이블의 내용을 바꾸게 된다. |
|
|
|
----------------------------------------------------------------------------------------------------- |
view 수정 |
create or replace view view명 |
as |
subquery |
|
|
create or replace view empvw30 <-empvw30이라는 이름의뷰가 없으면 생성 있으면 아래의 select문으로 내용을 변환하라. |
as create or replace를 항상 같이 써야한다. |
select empno,ename,comm,deptno |
from emp |
where deptno=30; |
|
----------------------------------------------------------------------------------------------------- |
view의 종류 |
simple view |
complex view 둘로 나눌수가 있다 . |
|
simple view |
as 밑에 있는 select문을 |
단순화 한것 |
|
|
complex view |
as 밑에 있는 select문을 |
복잡하게 한것 |
join,group by,having등이 오는 |
것들을 말한다. |
|
*complex view의 경우엔 dml이 안되는 경우가 있다. |
ex)SCOTT>insert into avg_deptno |
2 values(50,5000); |
insert into avg_deptno <- dml이 안된다. |