본문 바로가기

DataBase

DataBase[뷰 개념, 생성, 삭제, 수정][뷰 권한 오류]


개념 : 하나이상의 테이블을 합하여 만든 '가상테이블'

         


** select문을 이용하여 최종결과를 얻음. 

** 그 결과를 마치 실제 테이블처럼 사용할 수 있도록 만들어주는 데이터 베이스 객체이다.

** 실제 데이터를 디스크에 저장하지 않는다. 대신에 뷰를 생성할 때 사용한 select문의 정의를 DBMS가 저장 => 사용자에게 반환



장점 :


편리성 = 미리 정의된 뷰를 일반 테이블 처럼 사용 OR 사용자가 필요한 정보만 요구에 맞게 가공하여 뷰로 만듬.

 

재사용성 = 자주 사용되는 질의를 뷰로 미리 정의해 놓을 수 있음


보완성 = 각 사용자별로 필요한 데이터만 선별할 수 있다.


뷰 생성


예) CREATE VIEW 뷰이름 [(열이름[,.....N])]

     AS SELECT 문


1.  테이블을 먼저 생성한다.


CREATE TABLE DEPT(

DEPTNO NUMBER(10),

NAME VARCHAR(20));


2. 뷰를 생성한다.


CREATE VIEW V_DEPT

AS SELECT *

FROM DEPT

WHERE DEPTNO = 10;



" BUT 뷰 생성 오류 발생 : ORA-01031: 권한이 불충분합니다 "


CONN SYSTEM

설치 할 때 입력했던 비밀번호

GRANT CREATE VIEW(INDEX) TO 사용자 계정 (연결할 EX : SCOTT)

CONN 사용자 계정 (연결할 EX : SCOTT)


확인


SELECT *

FROM DEPT;




뷰 수정


예) CREATE OR REPLACE VIEW 뷰이름 [(열이름[,.....N])]

     AS SELECT 문


생성된 뷰를 수정하는데 내용을 수정하는 것이 아니다. 보여지는 가상테이블을 변경해주는 것 (착각 주의!)


CREATE OR REPLACE VIEW V_DEPT

AS SELECT *

FROM DEPT

WHERE DEPTNO  = 20;


확인


SELECT *

FROM DEPT;




뷰 삭제


예) DROP VIEW 뷰이름 [ ,.....N];


DROP VIEW V_EMP;


확인                                                                                                                                                                                                                                                                                                                                                                                  

SELECT *

FROM DEPT;


1. 단순 VIEW(SIMPLE VIEW)


: 단순 VIEW는 VIEW를 생성할 서브쿼리에 조인 조건없이 1개의 테이블로 만들어지는 간단한 VIEW.


예) CREATE [OR REPLACE][FORCE|NOFORCE] VIEW 뷰이름 [(열이름[,.....N])]

     AS SELECT 문

    [WITH CHECK OPTION [CONSTRANIT 제약조건]]

    [WITH READ ONLY]



* 용어 설명 *


FORCE : 기본 테이블의 존재 여부에 상관없이 VIEW생성


NOFORCE : 기본 테이블이 존재 할 경우에만 VIEW 생성, 기본 값.


WITH CHECK OPTION : 주어진 제약조건에 맞는 데이터만 입력 및 수정을 허용


WITH READ ONLY : SELECT만 가능한 일기 전용 뷰를 생성


2. 복합 VIEW ( COMPLEX VIEW )


: 여러 개의 테이블이 JOIN되어 생성되는 것.


예) CREATE [OR REPLACE][FORCE|NOFORCE] VIEW 뷰이름 [(열이름[,.....N])]

     AS SELECT 문

    [WITH CHECK OPTION [CONSTRANIT 제약조건]]

    [WITH READ ONLY]



CREATE OR REPLACE VIEW V_EMP_DEPT

AS SELECT E.ENAME , D.DNAME

     FROM EMP E, DEPT D

     ON E.DEPARTMENT = D.DEPARTMENT

     WHERE E.DEPARTMENT =100;


3. 인라인 VIEW (INLINE VIEW)


: 여러 번 사용할 필요 없이 1회만 필요한 VIEW일 경우 SQL문자의 FROM절에 

   VIEW의 서브쿼리 부분을 바로 적어주면 되며 이런 일회용 VIEW를 말함.