본문 바로가기

프로그래밍/DataBase

[DataBase]뷰

View란

하나 이상의 Base table을 기반으로 생성은 되었으나 물리적으로 존재하지 않고 Data Dictionary에 Select 구문 형태로 정의만 되어 있는 가상의 논리적인 테이블이다.

 

 한마디로 저장공간을 차지하지 않고, 테이블에 영향을 끼치지 않는 테이블 미리보기 같은 것이다.

 

 

 

뷰 생성

 문법

CREATE [OR REPLACE] [ FORCE | NOFROCE ] view 뷰이름
as select 컬럼명
   from 테이블명;

 

 

 속성

속성 내용
OR REPLACE  만들어진 뷰가 없으면 새로운 뷰를 만들고, 만약 같은 이름의 뷰가 만들어져 있으면 교체를 한다.

 이 속성을 쓰지 않고 이미 존재하는 이름의 뷰를 만들면 뷰가 생성되지 않는다.
FORCE / NOFROCE  생략 시 NOFORCE가 기본 값으로 들어간다.

 NOFROCE : 테이블이 존재 할 때만 뷰를 만든다.
 FORCE : 테이블 존재 유무에 상관없이 뷰를 만든다.

 

 

 

뷰 삭제

 문법

DROP VIEW 뷰명;

 

 

 

 

뷰 사용 예제

create view empvu80
as select employee_id, last_name, salary
   from employees
   where department_id = 80;

employees 테이블의

department_id가 80인 조건인

employee_id, last_name, salary칼럼을

empvu80이라는 이름의 뷰로 만든다.

 

 

 

create or replace view empvu80
(id_num, name, sal, department_id)
as select employee_id, first_name || ' ' || last_name, salary, department_id
   form employees
   where department_id = 80;

employees 테이블의

department_id가 80인 조건인

employee_id, first_name || ' ' || last_name ( first_name컬럼과 last_name 컬럼을 사이에 공백 하나 두고 합친), salary, department_id 컬럼을

empvu80이라는 뷰로 수정하거나 만든다.

 

 

first_name || ' ' || last_name를 칼럼이름으로 할 수 없기 때문에 앨리아스(as)를 통해 칼럼명을 새로 정의해 주어야 할 것이다. 하지만 위 sql 구문에서는 앨리아스를 찾아 볼 수가 없다. 대신 두번 째 줄 (id_num, name, sal, department_id)을 통해 컬럼명을 새로 지정해 주고있다. 이렇게 앨리아스 대신 컬럼명을 정할 경우 컬럼의 순서와 개수에 맞춰서 지정해 주어야 한다.

 

 

'프로그래밍 > DataBase' 카테고리의 다른 글

[DataBase]시퀀스  (0) 2021.04.21
[DateBase]테이블 복사  (0) 2021.04.07
[DateBase]그룹함수  (0) 2021.04.05
[DataBase]일반 함수  (0) 2021.03.31
[DataBase]문자함수  (0) 2021.03.23