VIEW (뷰)
하나 이상의 물리적인 테이블을 근거한 논리적인 가상 테이블 (메모리)
저장 장치 내에 물리적으로 존재하지 않는 다 (디스크 저장 공간이 할당되지 않음)
사용법
CREATE OR REPLACE VIEW [VIEWNAME] AS [SUBQUERY]
[WITH CHECK OPTION]
[WITH READ ONLY]
VIEW를 사용하기 위해서는 권한이 필요하다
VIEW 권한 부여 (SYSTEM(관리자) 계정으로 부여)
GRANT CREATE VIEW TO [사용자 계정];
VIEW는 테이블 수에 따라 단순 뷰(simple view), 복합 뷰(complex view)로 나뉨
VIEW는 보안과 사용의 편의성 때문 사용됨
보안을 위한 뷰 (예제)
CREATE VIEW V_EMP_SAMPLE
AS
SELECT ENO,ENAME,JOB,MANAGER,DNO
FROM EMPLOYEE;
정보를 손쉽게 얻기 위한 뷰 (예제)
CREATE VIEW V_EMP_COMPLEX2
AS
SELECT E.ENO,E.ENAME,E.SALARY,DNO,D.DNAME,D.LOC
FROM EMPLOYEE E NATURAL JOIN DEPARTMENT D;
VIEW는 데이터를 저장하고 있지 않은 가상 테이블 실체가 없음
VIEW를 정의할 때 CREAT VIEW 명령어 다음 AS절에 기술한 쿼리 문장 자체를 저장했다가 이를 실행
(CASH와 흡사함 >> CASH는 물리적으로 저장 VIEW는 메모리에 저장 )
뷰에 그룹 함수 사용 (별칭 사용)
별칭을 칼럼명처럼 사용할 수 있음
CREATE VIEW V_EMP_SALARY2
AS
SELECT DNO AS "부서명" ,SUM(SALARY) AS "SAL_SUM", AVG(SALARY) AS "SAL_AVG"
FROM EMPLOYEE
GROUP BY DNO;
SELECT 부서명,SAL_SUM,SAL_AVG
FROM V_EMP_SALARY2;
CREATE VIEW V_EMP_SALARY
AS
SELECT DNO 부서명 ,SUM(SALARY) AS "급여합계", ROUND(AVG(SALARY)) AS "급여평균"
FROM EMPLOYEE
GROUP BY DNO;
SELECT 부서명,급여합계,급여평균
FROM V_EMP_SALARY;
뷰를 이용해 정보 보기
SELECT * FROM V_EMP_SALARY ORDER BY DNO;
SELECT DNO,급여합계,급여평균 FROM V_EMP_SALARY ORDER BY DNO;
뷰가 더 이상 필요 없을 때는 삭제
DROP VIEW [뷰 이름]
뷰는 가상 테이블이기 때문에 뷰를 삭제한다는 것은 USER_VIEWS 데이터 딕셔너리에 저장된 것을 삭제한다는 뜻이다
뷰를 삭제해도 실제 테이블에 영향을 주지 않는 다
CREATE OR REPLACE VIEW
- 이미 존재하는 뷰에 대해서 그 내용을 새롭게 변경하여 생성
FORCE
- 기본 테이블의 존재 여부와 상관없이 뷰 생성
WITH CHECK OPTION
- 해당 뷰를 통해서 볼 수 있는 범위 내에서만 UPDATE, INSERT가 가능
WITH READ ONLY
- 해당 뷰를 통해서는 SELECT만 가능 INSERT, UPDATE , DELETE 할 수 없음
- 이것을 생략한다면 INSERT, UPDATE , DELETE 모두 가능
'SQL > ORACLE SQL' 카테고리의 다른 글
PL/SQL : 제어 문, 반복 문 (0) | 2022.11.11 |
---|---|
PL/SQL : 변수 선언 (0) | 2022.11.11 |
제약 조건 : CHECK, DEFAULT (0) | 2022.11.10 |
제약 조건 : FOREIGN KEY (외래 키 또는 참조 키) (0) | 2022.11.09 |
제약 조건 : PRIMARY KEY (기본 키) (0) | 2022.11.09 |