하나 이상의 테이블을 조회하는 SELECT문을 저장한 객체다. SELECT문을 저장한 것이므로 가상의 테이블이라 볼 수 있고, 물리적인 데이터가 저장된 것은 아니다. 그래서 INSERT, UPDATE, DELETE 작업의 수행이 사실상 불가능하다.
FROM절에서 사용하는 서브쿼리인 '인라인 뷰'와 비슷하지만 인라인 뷰는 SQL문 실행 이후 사라지지만, 뷰 객체는 영구적으로 존재한다.
앞서 공부했듯이 하나의 SQL문 내에 여러 개의 SELECT문이 존재할 수 있다. 그러한 SELECT문을 뷰로 저장해두면 전체 SQL문의 복잡도를 줄일 수 있다.
하나의 데이터베이스에는 여러 사용자가 접근할 수 있다. 접근하는 사용자에 따라 특정 데이터를 숨기기 위해 사용한다. 예를 들어, 어떤 작업을 수행하기 위해 직원테이블을 다루어야 하는데 직원의 주민등록번호나 연봉은 민감한 정보다. 이때 작업자가 이러한 민감한 정보를 조회하는 것을 막기 위해 작업에 필요한 컬럼만 SELECT한 뷰를 제공한다.
-- 뷰 생성
CREATE OR REPLACE VIEW 뷰이름
AS SELECT문;
-- 뷰 삭제
DROP VIEW 뷰이름;