(사용형식)
CREATE [OR REPLACE] VIEW 뷰이름[(컬럼list)]
AS
SELECT 문;
[WITH READ ONLY];
[WITH CHECK OPTION];
- '(컬럼list)' : 생성된 뷰에서 사용할 컬럼명
생략하면 뷰의 SELECT절에 사용된 컬럼의 별칭,
또는 뷰의 SELECT절에 컬럼의 별칭이 사용되지 않았으면
SELECT절에 컬럼명이 뷰의 컬럼명이 됨
- 'WITH READ ONLY' : 읽기전용 뷰 생성
- 'WITH CHECK OPTION' : 'SELECT 문'의 WHERE 조건을
위배하는 DML명령을 뷰를 대상으로 수행시킬 수 없음
- 'WITH READ ONLY'와 'WITH CHECK OPTION'는 같이 사용
할 수 없음
CREATE OR REPLACE VIEW V_MEM01(MID,MNAME,MJOB,MILE)
AS
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE>=3000;
SELECT * FROM V_MEM01;
// 표 컬럼명 회원번호/회원명/직업/마일리지
CREATE OR REPLACE VIEW V_MEM01
AS
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM MEMBER
WHERE MEM_MILEAGE>=3000;
// 표 컬럼명 MEM_ID,MEM_NAME,MEM_JOB,MEM_MILEAGE
CREATE OR REPLACE VIEW V_MEM01
AS
SELECT MEM_ID,
MEM_NAME,
MEM_JOB ,
MEM_MILEAGE
FROM MEMBER
WHERE MEM_MILEAGE>=3000;
-- 쿼리 테스트같은거 할때 복사본으로 테스트 하려고 만들어봄~
CREATE TABLE TEMP_MEM
AS
SELECT MEM_ID,MEM_NAME, MEM_REGNO1,MEM_REGNO2,MEM_JOB,MEM_MILEAGE
FROM MEMBER;
컬럼은 회원번호, 회원명, 직업, 마일리지
CREATE OR REPLACE VIEW V_TMEM01
AS
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM TEMP_MEM
WHERE MEM_MILEAGE>=3000
AND SUBSTR(MEM_REGNO2,1,1) IN ('2','4');
뷰(V_TMEM01)의 내용 UPDATE -> 's001' 회원의 마일리지를 2500으로 변경하시오
UPDATE V_TMEM01
SET 마일리지 = 2500
WHERE 회원번호 = 's001';
SELECT * FROM V_TMEM01;
MILEAGE 3000 이상의 모임인데 2500 됐으니까 해당 회원 없어짐
SELECT * FROM TEMP_MEM;
//뷰를 바꿨더니 원본테이블도 바뀌었다
UPDATE TEMP_MEM
SET MEM_MILEAGE = 7500
WHERE MEM_ID = 's001';
SELECT * FROM V_TMEM01;
뷰 고치면 원본 고쳐지고 원본 고치면 뷰 고쳐지ㅗㄱ
컬럼은 회원번호, 회원명, 직업, 마일리지
CREATE OR REPLACE VIEW V_TMEM02
AS
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM TEMP_MEM
WHERE MEM_MILEAGE>=3000
AND SUBSTR(MEM_REGNO2,1,1) IN ('2','4')
WITH READ ONLY;
(EX) 뷰(V_TMEM02)의 내용 UPDATE→’s001’회원의 마일리지를 2500으로 변경
UPDATE V_TMEM02
SET 마일리지 =2500
WHERE 회원번호 = 'S001';
// 얘는 뷰값 변경 불가함!
(EX) 원본테이블(TEMP_MEM)의 내용 UPDATE→’s001’회원의 마일리지를 2500으로 변경
UPDATE TEMP_MEM
SET MEM_MILEAGE = 2500
WHERE MEM_ID = 's001';
// 원본테이블은 변경 가능하다!!!
SELECT * FROM V_TMEM02;
컬럼은 회원번호, 회원명, 직업,마일리지 이다
CREATE OR REPLACE VIEW V_TMEM03
AS
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_JOB AS 직업,
MEM_MILEAGE AS 마일리지
FROM TEMP_MEM
WHERE MEM_MILEAGE>=3000
WITH CHECK OPTION;
(EX) 뷰(V_TMEM03)에서 ‘e001’회원(이혜나)의 마일리지를 6500에서 1000으로 수정
UPDATE V_TMEM03
SET 마일리지 =1000
WHERE 회원번호 = 'e001';
UPDATE V_TMEM03
SET 마일리지 =16500
WHERE 회원번호 = 'e001';
UPDATE V_TMEM03
SET 마일리지 =16500
WHERE 회원번호 = 'e001';
(EX) 원본테이블(TEMP_MEM)의 내용 UPDATE → ‘e001’회원의 마일리지를 2500으로 변경
UPDATE TEMP_MEM
SET MEM_MILEAGE=2500
WHERE MEM_ID = 'e001';
원본테이블이 변경되어지는것은 뷰하고는 상관이 없으니까 뷰로 바꿈!