SQL view 개념 정리 및 적용예제

Devel/DB_SQL|2020. 8. 6. 17:50
반응형

SQL view 뷰

 

view

create view 권한 할당

grant create view to scott;

 

-view 작성법

 

**주의할점

subquery는 조인, set 연산, 서브쿼리가 포함된 복잡한 SELECT 문이 정의 가능하다. subquery에는 ORDER BY 절을 사용할 수 없다. 

ORDER BY를 사용하려면 검색시 뷰에 기술한다. 

뷰를 수정하기 위해서는 CREATE OR REPLACE 을 이용한다. 

CREATE VIEW 권한을 가져야 뷰를 생성할 수 있다.

 

-view 생성

create view emp_view

as

select empno, ename, sal, hiredate

from emp where deptno = 10;

create view dept_view

as

select deptno no, dname name

from dept;

 

 

 

 

-view 수정

:CREATE OR REPLACE 명령 이용한다.

CREATE OR REPLACE VIEW DEPT_VIEW

AS

SELECT DEPTNO NO, DNAME NAME, LOC

FROM DEPT;

 

** EX. SAL * 1.1 해서 그대로 VIEW에 넣을 수 없고  ALIASE를 이용해서 넣어줘야 한다.

 

 

컬럼, 구조를 변경하는 것.

만들거나 변경하는 것.

 

-복합뷰 (VIEW) 생성

여러군데 테이블에서 미리 자료를 뽑아서 하나의 테이블로 만들 수 있다.

조인,,했던 결과가 테이블로 남아 있다,,,

CREATE VIEW EMP_DEPT_VIEW

AS

SELECT EMPNO, ENAME, DNAME

FROM EMP, DEPT

WHERE EMP.DEPTNO = DEPT.DEPTNO

AND DEPT.DEPTNO = 30;

 

 

-제약조건

단순 뷰에서 DML 연산 수행 가능 하다.

뷰가 다음을 포함한다면 행을 제거할 수 없다.

- 그룹함수

- GROUP BY 절

- DISTINCT 키워드

뷰가 다음을 포함한다면 데이터를 수정할 수 없다.

- 위의 임의의 조건

- ROWNUM 의사열

- 표현식으로 정의된 열 ( 예: SAL*12 )

뷰가 다음을 포함한다면 데이터를 추가할 수 없다.

- 위의 임의의 조건

- 뷰에 의해 선택되지 않은 NOT NULL 열이 기본테이블에 있을 때

 

-뷰에 있는 자료를 수정했을 때 원본 자료도 변경된다.

 

- WITH CHECTK OPTION

WHERE 조건에 맞는 것들만 수정 할 수 있다.

 

-WITH READ ONLY

자료 읽기만 가능하다. DML작업은 불가능.

 

-view 제거

기본 테이블을 기반으로 하기 때문에 데이터 손실 없이 뷰를 삭제한다.

뷰 삭제는 뷰가 만들어진 기본 테이블에는 영향을 미치지 않는다.

 

** 뷰 삭제 후 원본테이블 결과 값도 변경된다.

DELETE FROM EMP_VIEW

WHERE EMPNO = 7782;

 

UPDATE EMP_VIEW

SET ENAME = 'NY'

WHERE EMPNO = 7788;

 

SELECT * FROM EMP_VIEW;

 

SELECT * FROM EMP;

 

ROLLBACK;

 

댓글()
loading