본문 바로가기
카테고리 없음

오라클[sql] 뷰

by 콩king 2022. 9. 24.

▶ 물리적인 테이블의 내용을 따라하는(논리적인) 가상의 테이블

 테이블에는 데이터가 존재

 뷰에는 데이터는 없고 SQL 문장만 존재

▶ 사용자가 뷰에 접근 > 뷰 안에 들어있는 SQL 문장 실행

 

----------------------------------------------------

CREATE TABLE emp

AS SELECT * FROM scott.emp;

 

CREATE TABLE dept

AS SELECT * FROM scott.dept;

 

commit;

----------------------------------------------------

 

뷰 생성

CREATE VIEW emp_view01

AS SELECT empno, ename, deptno FROM emp WHERE deptno = 20;

 

SELECT * FROM emp_view01;

 

INSERT INTO emp(empno, ename, deptno)

VALUES (9999, '홍길동', 20);

INSERT INTO emp(empno, ename, deptno)

VALUES (9998, '홍길순', 10);


SELECT * FROM emp_view01;

▶ 데이터베이스의 내용을 선택적으로 보여줄 수 있음 > 데이터베이스의 접근 제한

 join을 통해서 여러테이블의 데이터를 view 만들어놓으면 쿼리문이 단순해집니다.

 

뷰 삭제

DROP VIEW 뷰명;

 

WITH CKECK OPTION / WITH READ ONLY

▶ WITH CHECK OPTION

-- 뷰를 만들 때 해당 제약 조건 안에서만 삽입, 삭제 수정이 가능함

▶ WITH READ ONLY

-- 뷰가 읽기 전용으로 바뀜 >> 수정 안됨

 

예제

조인으로 뷰 생성 

CREATE OR REPLACE VIEW emp_dept_view03

AS

SELECT e.empno, e.ename, e.job, e.sal, d.deptno, d.dname, d.loc

  FROM emp e INNER JOIN dept d

    ON e.deptno = d.deptno

ORDER BY empno desc;

 

SELECT * FROM emp_dept_view03;

 

UPDATE emp SET job = '백수' WHERE job is null;

댓글