- 논리적인 테이블
- 물리적으로도 연결되어 있기 때문에 원본과 VIEW가
서로 상호적으로 데이터 변경 시 각자에 반영된다.
- SELECT를 단순하게 하기 위해 WIEW씀
(내가 정의해서 저장해놓고 쓰고 싶을 때마다 호출하여 쓸 수 있다.)
- 보안상으로 VIEW씀
// 뷰 생성
CREATE VIEW EMP_VIEW(EMPNO, ENAME, JOB) AS
SELECT EMPNO, ENAME, JOB FROM EMP WHERE JOB='SALESMAN';
// 뷰 생성 OR 수정
-> 없는 뷰 이름을 써주면 뷰가 생성되고 있는 뷰 이름을 써주면 뷰가 수정된다.
CREATE OR REPLACE VIEW EMP_VIEW(EMPNO, ENAME, JOB) AS
SELECT EMPNO, ENAME, JOB FROM EMP WHERE JOB='SALESMAN';
컬럼명은 달라도 되지만 나중에 알아봐야 하기 때문에 같은 이름으로
주는것을 지향한다.
CREATE 해야 나중에 종료 후에도 쓸 수 있다.
// 그룹 뷰 생성 시 꼭 별명을 써야한다. 아래 에러
CREATE VIEW V1(DEPTNO, AVG(SAL), SUM(SAL)) AS
SELECT DEPTNO, AVG(SAL), SUM(SAL) FROM EMP GROUP BY DEPTNO;
// 그룹 뷰 생성 시 생성 방법
CREATE VIEW V1(DEPTNO, 평균, 합) AS
SELECT DEPTNO, AVG(SAL) AS 평균, SUM(SAL) 합 FROM EMP GROUP BY DEPTNO;
// 내가 만든 VIEW의 내용 조회
SELECT VIEW_NAME, TEXT FROM USER_VIEWS;
VIEW_NAME TEXT
------------------- --------------------------------------------------------
EMP_VIEW SELECT EMPNO, ENAME, JOB FROM EMP
WHERE JOB='SALESMAN'
V1 SELECT DEPTNO, AVG(SAL) AS 평균, SUM(SAL) 합
FROM EMP GROUP BY DEPTNO
// 복합 VIEW 생성
CREATE VIEW EMPVI(EMPNO, ENAME, JOB, DEPTNO, DNAME) AS
SELECT E.EMPNO, E.ENAME, E.JOB, D.DEPTNO, D.DNAME FROM EMP E, DEPT D
WHERE E.DEPTNO=D.DEPTNO AND JOB='SALESMAN';