서론
앞서 서브쿼리
에 관해 배운적이 있다.
이때 서브쿼리는 FROM
구에서도 기술할 수 있었다.
여기서 FROM 구에 기술된 서브쿼리에 이름
을 붙이고 데이터베이스 객체화
하여 쓰기 쉽게 한 것을 뷰
라고 한다.
지금부터는 뷰의 작성 및 삭제 방법, 그리고 뷰의 구조에 관해 설명하겠다.
나아가 뷰의 특징에 대해서도 간단하게 소개하겠다.
1. 뷰
데이터베이스 객체
란 테이블이나 인덱스 등 데이터베이스 안에 정의하는 모든 것을 말한다.
뷰
역시 데이터베이스 객체 중 하나이다.
반면 SELECT
명령은 객체가 아니다.
SELECT 명령에 이름을 지정할 수도 없고 데이터베이스에 등록되지도 않기 때문이다.
이처럼 본래 데이터베이스 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름
을 붙여 관리할 수 있도록 한 것이 뷰이다.
SELECT 명령은 실행했을 때 테이블에 저장된 데이터를 결괏값으로 반환한다.
따라서 뷰를 참조하면 그에 정의된 SELECT 명령의 실행결과
를 테이블처럼 사용할 수 있다.
하지만 뷰는 테이블처럼 데이터를 쓰거나 지울 수 있는 저장공간
을 가지지 않는다.
이 때문에 테이블처럼 취급할 수 있다고는 해도 SELECT 명령에서만 사용하는 것을 권장한다.
INSERT나 UPDATE, DELETE 명령에서도 조건만 맞으면 가능하지만 사용에 주의할 필요가 있다.
2. 뷰 작성과 삭제
뷰는 데이터베이스 객체이기 때문에 DDL
로 작성하거나 삭제한다.
먼저 뷰를 작성할 때는 CREATE VIEW
를 사용한다.
CREATE VIEW sample_view AS SELECT * FROM sample_table;
참고로 sample_table 의 데이터는 다음과 같다.
CREATE VIEW로 뷰를 작성한 뒤 SELECT 명령의 FROM 구에 지정해 사용할 수 있다.
SELECT * FROM sample_view;
뷰는 필요에 따라 열을 지정
할 수도 있는데, 이 경우에는 이름 뒤에 괄호
로 묶어 열을 지정한다.
CREATE VIEW sample_view(a) AS SELECT id FROM sample_table;
SELECT * FROM sample_view;
뷰를 삭제할 경우에는 DROP VIEW
를 사용한다.
DROP VIEW sample_view;
3. 뷰의 특징
뷰는 데이터베이스 객체로서 저장장치
에 저장된다.
하지만 테이블과 달리 대량의 저장공간을 필요로 하지 않는다.
데이터베이스에 저장되는 것은 SELECT 명령뿐
이기 때문이다.
다만 저장공간을 소비하지 않는 대신 CPU 자원
을 사용한다.
뷰를 참조하면 뷰에 등록되어 있는 SELECT 명령이 실행된다.
실행 결과는 일시적으로 보존되며, 뷰를 참조할 때마다
SELECT 명령이 실행된다.