View
- 데이터베이스에 존재하는 '가상의 테이블'
- 실제 행과 열을 가지고 있지만 데이터를 저장하고 있지는 않음
- 테이블처럼 물리적으로 저장되는 것은 아님
- join이나 subquery와 같이 여러 개의 테이블을 참조하여 데이터를 조회할 때 번거로움을 줄일 수 있음
- 단, MySQL에서 View는 단지 다른 테이블이나 View에 있는 데이터를 보여주는 역할만 수행.
- View와 Table의 차이점은, Table은 실질적인 데이터가 있지만 View는 데이터가 없고 SQL만 저장한다.
View 장점
- 특정 사용자에게 테이블 전체가 아닌 필요한 필드만(보안성) 보여줄 수 있음.
- DBMS의 사용자별 권한 관리 기능을 통해 사용자가 테이블에 직접적인 접근을 하지 못하도록 막을 수 있음.
- 복잡한 쿼리를 단순화해서 사용할 수 있음.
- 쿼리를 재사용할 수 있음.
- 여러 방법의 데이터 조회에 알맞은 다양한 구조의 데이터 분석 기반을 구축할 수 있음.
View 단점
- 삽입, 삭제, 갱신 작업에 많은 제한 사항을 가짐
- View는 자신만의 인덱스를 가질 수 없음.
View data 변경
- update 된다.
- View를 조회하게 되면, 옵티마이저에서 View를 생성할 때 저장해 놓은 Select문이 실행되는 것이기 때문에 View이 data또한 update가 된 것처럼 보임
View 종류
- 단순 뷰 (Simple View)
- 하나의 테이블로 생성
- 그룹 함수의 사용이 불가능.
- distinct 사용 불가능.
- DML 사용 가능
- 복합 뷰 (Complex View)
- 여러개의 테이블로 생성(join)
- 그룹 함수의 사용이 가능
- distinct 사용 가능
- DML 사용 불가능
- 인라인 뷰 (Inline View)
- 일반적으로 가장 많이 사용
- from 절 안에 SQL문장이 들어가는 것을 인라인 뷰라 볼 수 있음.
Simple View
- 단순 뷰에서 DML 명령어 사용이 불가능한 경우.
- View 정의 시 포함되지 않은 컬럼 중 not null 제약조건이 지정되어 있는 경우
- 산술 표현식을 포함한 컬럼이 포함되어 있는 경우
- distinct를 포함한 경우
- 그룹 함수나 group by 절을 포함한 경우
View 생성
create or replace view 뷰이름
as
select 필드이름 1, 필드이름2, ...
from 테이블이름
where 조건;
- View는 원본 테이블의 이름과 같은 이름을 사용할 수 없음
- 뷰이름에 해당하는 View가 존재하면 replace, 존재하지 않으면 create가 일어 남.
View 수정
alter view 뷰이름
as
select 필드이름1, 필드이름2, ...
from 테이블이름;
View 삭제
drop view 뷰이름;