데이터베이스 View란?
데이터베이스 View란?
- 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블입니다.
- 한 개 이상의 기본 테이블이나 다른 뷰를 이용하여 생성되는 가상 테이블입니다.
- 가상 테이블이기 때문에 실제로 데이터를 저장하고 있지는 않습니다.
- INSERT, UPDATE, DELETE가 가능하지만 보통 SELECT를 위해 사용합니다.
즉, View는 하나 이상의 테이블이나 뷰를 조작하여 하나의 테이블처럼 볼 수 있는 가상의 테이블입니다.
동적 View와 정적 View
정적 View
하나 이상의 기반 테이블과 다른 정적/동적 View를 기반으로 정의된 View입니다.
관련된 테이블 또는 View가 변경될 때 정적 View를 수동으로 업데이트해야 합니다.
동적 View
동적으로 변경되는 데이터를 테이블 형태로 보여주는 View입니다.
관련된 테이블 또는 View가 변경될 때 동적 View가 자동으로 업데이트됩니다.
View를 사용하는 이유?
위의 그림처럼 EMPLOYEE 테이블과 DEPARTMENT 테이블이 존재할 때 View를 사용하여 V_EMP_DEMP로 활용할 수 있습니다.
- 자주 사용되는 복잡한 쿼리를 저장하는 데 사용할 수 있습니다. (재사용)
- 복잡한 쿼리를 단순화해서 사용할 수 있습니다. (단순함)
- 특정 사용자에게 테이블 전체가 아닌 필요한 필드만 보여줄 수 있습니다. (보안)
보안을 예시로 들면 다른 팀에서 관리하는 임원테이블의 임원들의 정보를 조회하고 싶을 때 모든 정보들을 받아올 경우 보안상 문제가 있을 수 있습니다.
이때 필요한 데이터들면 View로 재구성하여 보여주면 됩니다.
View의 단점
- 한 번 정의된 뷰는 변경할 수 없습니다. ( ALTER 불가능)
- INSERT, DELETE, UPDATE에 많은 제한이 있습니다.
- 독자적인 INDEX를 가질 수 없습니다.
View 사용법
Create 문을 사용하여 View를 생성할 수 있습니다.
DROP 문을 사용하여 View를 삭제할 수 있습니다.
MySQL에서 뷰를 생성하는 문법은 다음과 같습니다.
CREATE VIEW 뷰이름 AS
SELECT 필드이름1, 필드이름2, ...
FROM 테이블이름
WHERE 조건
1. 뷰의 이름을 명시합니다. (뷰는 원본 테이블과 같은 이름을 가질 수 없습니다!)
2. AS 키워드 다음에 SELECT 문을 사용하여 해당 뷰가 접근할 수 있는 필드를 명시합니다.
3. 이때 WHERE 절을 사용하여 특정 조건을 설정할 수 있습니다.
MySQL에서 뷰를 삭제하는 문법은 다음과 같습니다.
DROP VIEW 뷰이름 RESTRICT or CASCADE
RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소됩니다.
CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제됩니다.
출처
http://www.tcpschool.com/mysql/mysql_view_createReplace
https://velog.io/@gillog/DB-View