Oracle

오라클 뷰(view) 를 알아보자

Josh 2021. 5. 15. 00:58
반응형

뷰란 무엇인가?

뷰(view)는 하나 이상의 테이블이나 다른 뷰의 데이터를 볼 수 있게 하는 데이터베이스 객체이다.
실제 데이터는 뷰를 구성하는 테이블에 담겨 있지만 마치 테이블처럼 사용할 수 있다.
또한 테이블 뿐만 아니라 다른 뷰를 참조해 새로운 뷰를 만들어 사용할 수 있다.

뷰(view)의 사용 목적

복잡한 질의를 쉽게 만들어 준다.
여러 테이블의 JOIN과 GROUP BY 같은 복잡한 쿼리를 view로 저장시켜두면 다음부터는 저장 view 정보만 가지고 오면 된다.

뷰(view)의 특징

  1. 기본 테이블로 부터 유도된 테이블, 같은 형태의 구조, 조작도 기본 테이블과 거의 같다.
  2. 가상 테이블이기 떄문에 물리적으로 구현되어 있지 않다.
  3. 데이터의 논리적 독립성 제공 가능.
  4. 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이. 명령문이 간단해짐.
  5. 뷰를 통해서 데이터를 접근하기 때문에 뷰에 나타나지 않는 데이터를 안전하게 보호하는 효율적인 기법 사용 가능.
  6. 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야지만 삽입, 삭제, 갱신, 연산 이 가능.
  7. 정의된 뷰는 다른 뷰의 정의에 기초 될 수 있음.
  8. 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제됨.

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