본문 바로가기
개발/데이터베이스

(데이터베이스) VIEW(뷰)

by kakk789 2022. 4. 29.

뷰(VIEW)

  • 하나 이상의 테이블을 합하여 만든 가상의 테이블
  • 자주 사용하는 복잡한 SQL문을 미리 VIEW로 만들어서 사용

장점

  • 편리성 및 재사용성 : 자주 사용하는 복잡한 SQL문을 미리 VIEW로 만들어서 사용
  • 보안성 : 각 사용자 별로 필요한 데이터만 선별하여 보여줄 수 있음. 중요한 질의의 경우 질의 내용을 암호화 할 수 있음 (개인정보, 급여,건강 같은 민감 정보를 제외한 테이블을 만들어 사용)
  • 독립성 제공 : 미리 정의된 뷰를 일반 테이블처럼 사용할 수 있음

VIEW 생성

CREATE VIEW 뷰이름[(열이름 [ ,....n])]
AS SELECT 문

VIEW 권한 주기

뷰 소유자(생성자)
GRANT 권한명(예: SELECT) ON 뷰이름 TO 권한받을ID
- SELECT 권한을 '권한받을ID' 에게 준 것

권한 받을 사람
SELECT * FROM 뷰소유자ID.뷰이름

VIEW 권한 제거

REVOKE 권한명(예: SELECT) ON 뷰이름 FROM 권한받은ID;

VIEW 수정

  • 동일한 이름의 VIEW가 존재하면 수정해주고 없다면 새로 생성하는 명령
CREATE OR REPLACE VIEW 뷰이름 AS SELECT ....

VIEW 삭제

DROP VIEW VIEW명

뷰 (VIEW) 생성화면

VIEW로 INSERT, UPDATE, DELETE

  • VIEW 로 레코드를 INSERT, UPDATE, DELETE 를 하게 되면 부모 테이블로 추가/수정/삭제가 된다.
  • 만약,  VIEW 생성 시에 조건에 맞지않는 레코드를 추가하게 되면 모테이블에는 추가는 되는데, VIEW 에는 조건식이 맞지 않기 때문에 당연히 나타나지 않는다.

조건에 맞지 않는 VIEW 생성

실제 뷰테이블에 '문재인' 추가 X

WITH CHECK OPTION

  • 뷰 생성시에 사용한 조건식에 맞는 레코드만 추가 /수정 하도록 하기 위한 옵션
CREATE VIEW 뷰이름 AS SELECT ~~ 조건식 WITH CHECK OPTION;

WITH READ ONLY

  • 읽기만 가능한 뷰 생성 하는 옵션
CREATE VIEW 뷰이름 AS SELECT ~~ 조건식 WITH READ ONLY;

읽기 전용 VIEW에 데이터 추가 할 경우 에러 발생함

 

반응형

댓글