뷰
▶ 물리적인 테이블의 내용을 따라하는(논리적인) 가상의 테이블
▶ 테이블에는 데이터가 존재
▶ 뷰에는 데이터는 없고 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;
댓글