꺄르륵
[Oracle SQL Developer] 기초 XVII - VIEW 본문
VIEW
1. VIEW 객체
- 가상의 테이블
- 기존의 VIEW 나 테이블 객체를 통하여 생성(SELECT 문의 결과)
- VIEW 를 사용하는 목적
. 복잡한 쿼리의 결과를 자주 참조하는 경우에 사용된다.
. 테이블 전체가 아닌 일부분만 필요한 경우에 사용된다.
. 특정 테이블에 대한 접근을 제한할때 사용한다.(보안의 경우)
1.1. 사용형식
CREATE [OR REPLACE][FORCE|NOFORCE] VIEW VIEW명[( -- [OR REPLACE] 덮어쓰기, 하나의 VIEW로 최신화 작업을할 때 사용된다.
컬럼명1, 컬럼명2, ... -- VIEW의 컬럼명을 생략시 원본테이블에 있는 컬럼명을 따라쓴다.
)]
AS
(SELECT 문); -- VIEW가 생성될 대상
[WITH CHECK OPTION[CONSTRAINT 제약명]];
[WITH READ ONLY];
. '컬럼명1, 컬럼명2...' : 뷰 생성에 사용될 컬럼명
. FORCE|NOFORCE : FORCE - 기준테이블이 없어도 뷰가 생성된다. DEFAULT 값은 NOFORCE 이다.
. WITH CHECK OPTION : SELECT 문에 사용된 WHERE 절의 조건에 위배되는 데이터를 뷰에 수정/삽입을 할 수없다.
. WITH READ ONLY : 읽기 전용 뷰를 생성한다.
EX) 회원테이블에서 마일리지가 3000이상인 회원 정보로 VIEW 를 생성하시오.
회원번호, 회원명, 마일리지, 직업
CREATE OR REPLACE VIEW MEMBER_VIEW (MID, MNAME, MILEAGE, MJOB)
AS
(SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지,
MEM_JOB AS 직업
FROM MEMBER
WHERE MEM_MILEAGE >= 3000);
SELECT * FROM MEMBER_VIEW;
** MEMBER_VIEW에서 신용환(c001) 회원의 마일리지를 5500으로 변경하시오.
UPDATE MEMBER_VIEW
SET MILEAGE = 5500
WHERE MID = 'c001';
**
TABLE > CURSOR > VIEW 의 순서로 규모가 결정된다.
-- WITH CHECK OPTION
CREATE OR REPLACE VIEW MEMBER_VIEW (MID, MNAME, MILEAGE, MJOB)
AS
(SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지,
MEM_JOB AS 직업
FROM MEMBER
WHERE MEM_MILEAGE >= 3000)
WITH CHECK OPTION;
UPDATE MEMBER_VIEW
SET MILEAGE = 2500
WHERE MID = 'c001';
INSERT INTO MEMBER_VIEW
VALUES('c002','1234','진용환','930502','1632647',2005/05/02,'123-492','대전'
,'123번지','032-243-4912','275-2859','010-0348-3892','DKANPSK@GOOGLE.COM','학생','운동',' ',' ',3500);
CREATE OR REPLACE VIEW V_LPRO
AS
SELECT * FROM LPROD
WHERE LPROD_ID <= 10
WITH READ ONLY;
SELECT * FROM V_LPRO;
INSERT INTO V_LPRO
VALUES(0,'P304','가공식품');
INSERT INTO V_LPRO
VALUES(11,'P305','임산물');
DELETE V_LPRO
WHERE LPROD_ID = 0;
ROLLBACK;
COMMIT;
'프로그래밍 > DB' 카테고리의 다른 글
[Oracle SQL Developer] 기초 XIX - SEQUENCE 객체 (0) | 2019.10.29 |
---|---|
[Oracle SQL Developer] 기초 XVIII - INDEX (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XVI - DML (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XV - 집합연산자 (0) | 2019.10.29 |
[Oracle SQL Developer] 기초 XIV - SUBQUERY (0) | 2019.10.29 |