뷰란 무엇인가?
뷰(view)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체이다.
실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있다.
또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있다.
뷰(view)의 사용 목적
복잡한 질의를 쉽게 만들어 준다.
여러 테이블의 JOIN과 GROUP BY 같은 복잡한 쿼리를 view로 저장시켜두면 다음부터는 저장 view 정보만 가지고 오면 된다.
뷰(view)의 특징
- 기본 테이블로 부터 유도된 테이블, 같은 형태의 구조, 조작도 기본 테이블과 거의 같다.
- 가상 테이블이기 떄문에 물리적으로 구현되어 있지 않다.
- 데이터의 논리적 독립성 제공 가능.
- 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이. 명령문이 간단해짐.
- 뷰를 통해서 데이터를 접근하기 때문에 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법 사용 가능.
- 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신, 연산 이 가능.
- 정의된 뷰는 다른 뷰의 정의에 기초 될 수 있음.
- 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제됨.
left outer join query
select
member.*,
prod_id, prod_name, prod_cost, prod_price, prod_mileage
from
member left outer join cart on (mem_id = cart_member)
left outer join prod on(cart_prod = prod_id)
where mem_id = 'a001';
위와 같은 조회 쿼리문 있는데 이러한 쿼리문을 여러 번 자주 사용해야 한다면 사용할 때마다 SQL 문을 매번 작성하기보단 위 조회 쿼리문을 view로 만들어두고 이 뷰를 참조하면 매우 편리하다.
뷰(view) 생성
-- 문법
CREATE OR REPLACE VIEW [스키마.][뷰 NAME] AS
SELECT 문;
-- 예제
CREATE OR REPLACE VIEW V1 AS
SELECT
MEMBER.*,
prod_id, prod_name, prod_cost, prod_price, prod_mileage
from
member left outer join cart on (mem_id = cart_member)
left outer join prod on(cart_prod = prod_id)
where mem_id = 'a001';
이렇게 V1이라는 뷰를 하나 만들어 둔 뒤 뷰를 SELECT 하면 결괏값을 가져올 수 있다.
SELECT * FROM V1;
뷰(view) 수정
-- 문법
CREATE OR REPLACE VIEW [스키마.][뷰 NAME] AS
SELECT 문;
뷰의 생성과 수정은 동일. CREATE는 생성, REPLACE는 수정
뷰(view) 삭제
-- 문법
DROP VIEW [스키마.][뷰 NAME]
-- 예제
DROP VIEW V1;
뷰(view) 삭제 2
-- 문법
DROP VIEW 뷰 이름 RESTRICT OR CASCADE
-- 예제
DROP VIEW V1 RESTRICT OR CASCADE
RESTRICT : 뷰를 다른 곳에서 참조하고 있으면 삭제가 취소된다.
CASCADE : 뷰를 참조하는 다른 뷰나 제약 조건까지 모두 삭제된다.
뷰(view) 구조 확인
-- 문법
desc [스키마.][뷰 NAME];
desc V1;
team seed의 PMS(Project Management System) GAIA 가 잘 돌아갈 수 있도록 뷰 미리미리 생성해두자.
'Oracle' 카테고리의 다른 글
eclipse plug-in eXERD 연동하기 (2) | 2021.05.26 |
---|---|
DATE 와 TIMESTAMP 차이 (1) | 2021.05.15 |