.'(컬럼list)': 뷰에서 사용할 컬럼명. 생략하면 SELECT문의 컬럼 별칭이 뷰의 컬럼명이되고, SELECT문의 컬럼 별칭이 없는 경우 SELECT문의 컬럼명이 뷰의 컬럼명이 됨
.'OR REPLACE': '뷰이름'이 이미 존재하면 대치시키고 없으면 신규로 생성
(생성된 뷰이면 덮어쓰고/생성안된 뷰이면 생성함)
.'WITH READ ONLY': 읽기전용 뷰 생성. 뷰를 대상으로 DML명령을 수행시킬 수 없음.
다만 원본테이블은 제한없이 DML명령 사용할수 있으며, 원본테이블에서 변경사항은 즉시 뷰에 반영(변경금지)
.'WITH CHECK OPTION': 원본 SELECT 문의 WHERE 조건을 위배하는 값으로 뷰의 내용을 변경하는 DML명령을 사용할 수 있으며, (조건에 따라 뷰를 수정할 수 있음->뷰를 수정하면 원본테이블 데이터도 수정)원본테이블에서 변경사항은 즉시 뷰에 반영(변경가능)
.따라서 'WITH READ ONLY'와 'WITH CHECK OPTION'는 둘다 쓸 수 없다.
CREATE OR REPLACE VIEW MEM_MILE_V1(MID,MNAME,MILEAGE)
AS
SELECT MEM_ID,MEM_NAME,MEM_MILEAGE
FROM MEMBER
WHERE MEM_MILEAGE>=3000;
**(원본테이블 내용이 변경)
회원테이블에서 'E001'회원의 마일리지를 4000으로 변경하시오
UPDATE MEMBER
SET MEM_MILEAGE = 4000
WHERE MEM_ID = 'e001';
**(뷰의 내용이 변경)
회원테이블에서 'x001'회원의 마일리지를 9791에서 2000으로 변경하시오
UPDATE MEM_MILE_V1
SET MILEAGE = 2000
WHERE MID = 'x001';
SELECT*FROM MEM_MILE_V1; --뷰내용 확인
SELECT MEM_ID,MEM_MILEAGE FROM MEMBER;--원본테이블 내용 확인
WITH READ ONLY ❗사용예:: WITH READ ONLY 뷰생성
CREATE OR REPLACE VIEW MEM_MILE_V2
AS
SELECT MEM_ID,
MEM_NAME,
MEM_MILEAGE
FROM CUSTOMERS
WHERE MEM_MILEAGE>=3000
WITH READ ONLY;
reda only view에서는 자료를 삭제할 수 없다는 오류가 뜸p001이 삭제됨
WITH CHECK OPTION ❗사용예:: WITH CHECK OPTION 뷰생성
CREATE OR REPLACE VIEW MEM_MILE_V3
AS
SELECT MEM_ID AS 회원번호,
MEM_NAME AS 회원명,
MEM_MILEAGE AS 마일리지
FROM CUSTOMERS
WHERE MEM_MILEAGE>=3000
WITH CHECK OPTION;