본문 바로가기
IT

Oracle SQL 강좌 (뷰)

by 엘리후 2021. 6. 25.

뷰란?

- 뷰는 하나의 가상 테이블이라 생각 하면 된다.
- 뷰는 실제 데이터가 저장 되는 것은 아니지만 뷰를 통해 데이터를 관리 할수 있다.
- 뷰는 복잡한 Query를 통해 얻을 수 있는 결과를 간단한 Query로 얻을 수 있게 한다.
- 한 개의 뷰로 여러 테이블에 대한 데이터를 검색 할 수 있다.
- 특정 평가 기준에 따른 사용자 별로 다른 데이터를 액세스할 수 있도록 한다.

뷰의 제한 조건.

- 테이블에 NOT NULL로 만든 컬럼들이 뷰에 다 포함이 되 있어야 한다.
- ROWID, ROWNUM, NEXTVAL, CURRVAL등과 같은 가상컬럼에 대한 참조를 포함하고 있는 뷰에는 어떤 데이터도 INSERT 할 수 없다
- WITH READ ONLY 옵션을 설정한 뷰도 데이터를 갱신 할 수 없다.
- WITH CHECK OPTION을 설정한 뷰는 뷰의 조건에 해당되는 데이터만 삽입, 삭제,수정을 할 수 있다

뷰 문법

- FORCE : 기본 테이블 유무에 관계없이 VIEW를 생성
- WITH CHECK OPTION : VIEW에 의해 엑세스될 수 있는 행만이 입력되거나 변경될 수 있음을 지정
- WITH READ ONLY : SELECT만 가능한 VIEW 생성
- 함수를 사용한 컬럼은 반드시 ALIAS를 지정해야 한다.

뷰 예제

-- 뷰 생성 SQL> CREATE OR REPLACE VIEW name_query AS SELECT a.ename, b.dname FROM emp a, dept b WHERE a.deptno = b.deptno AND b.deptno = 20; -- 뷰를 이용한 조회 SQL> SELECT * FROM name_query; ENAME DNAME -------------------- ---------- SMITH RESEARCH JONES RESEARCH ...

WITH CHECK OPTION

뷰의 조건식을 만족하는 데이터만 INSERT 또는 UPDATE가 가능 하도록 하는 옵션 이다.
-- 부서 번호 10의 데이터를 조회 하는 뷰 SQL> CREATE OR REPLACE VIEW check_option AS SELECT empno, ename, deptno FROM emp WHERE deptno = 10 WITH CHECK OPTION ; -- 부서 번호가 10인 사원만 INSERT, UPDATE할 수 있다. SQL> INSERT INTO check_option(empno, ename, deptno) VALUES (10005, 'jain', 30); INSERT INTO check_option(empno, ename, deptno) * 1행에 오류: ORA-01402: 뷰의 WITH CHECK OPTION의 조건에 위배 됩니다

WITH READ ONLY

SELECT만 가능한 VIEW를 생성 한다
-- 아래 뷰는 읽기만 가능하다. SQL> CREATE OR REPLACE VIEW read_only AS SELECT empno, ename, deptno FROM emp WHERE deptno = 10 WITH READ ONLY;

뷰의 정보 조회

USER_VIEWS 데이터 사전을 통해서 뷰에 대한 정보를 조회 할 수 있다.
SQL> SELECT view_name, text FROM USER_VIEWS;

update COMVNUSERMASTER set user_nm = 'dddd' where user_id = 'ddd'
select * from COMVNUSERMASTER
select * from lettnemplyrinfo

CREATE OR REPLACE FORCE VIEW "REMOTETRAINING"."COMVNUSERMASTER" ("ESNTL_ID", "USER_ID", "PASSWORD", "USER_NM", "USER_ZIP", "USER_ADRES", "USER_EMAIL", "GROUP_ID", "USER_SE", "ORGNZT_ID", "PSTINST_CODE", "OFCPS_NM") AS 
SELECT esntl_id, emplyr_id, PASSWORD, user_nm, zip, house_adres, email_adres, GROUP_ID, 'USR' AS user_se, orgnzt_id, pstinst_code, ofcps_nm FROM lettnemplyrinfo WITH CHECK OPTION

'IT' 카테고리의 다른 글

[JEUS] JEUS 디렉토리 구조  (0) 2021.06.25
9.1 사용자 조건식 불러오기  (0) 2021.06.25
네이버 사이트맵(Sitemap) 등록, 리엑트, NEXTJS  (0) 2021.06.25
EDX 설치 방법  (0) 2021.06.25
무료 동영상 편집 프로그램 10가지  (0) 2021.06.25

댓글