본문 바로가기
Back/Database

VIEW(뷰)

by 시월해 2021. 4. 7.

View


- 물리적인 테이블에 근거한 논리적인 가상의 테이블을 말함.
- View는 실질적으로 데이터를 저장하고 있지 않음.
- View를 만들면 데이터베이스에 질의 시 실제 테이블에 접근하여 데이터를 불러오게 됨.
- 간단하게 말하면 필요한 내용들만 추출해서 사용하는 것.
- 주로 데이터를 조회할 때 가장 많이 사용됨.
- View는 테이블과 유사하며, 테이블처럼 사용이 가능함.
- View는 테이블에 저장하기 위한 물리적인 공간이 필요가 없음.
- 테이블과 마찬가지로 insert, update, delete, select 명령이 가능함.

 

View를 사용하는 이유

 

1) 보안 관리를 위해 사용함(중요함)
==> 보안 등급에 맞추어 컬럼의 범위를 정해서 조회가 가능하도록 할 수 있음.
2) 사용자의 편의성을 제공함.
  형식)  create view 뷰이름 as 쿼리문;

 

-- 인사부 view
-- 컬럼에 sal(급여), comm(보너스) 컬럼은 제외
create view emp_insa
as
select empno, ename, job, mgr, hiredate, deptno
from emp;
-- 영업부 view
-- 컬럼에 sal(급여) 컬럼은 제외
create view emp_sales
as
select empno, ename, job, mgr, hiredate, comm, deptno
from emp;
-- 회계부 view
-- 컬럼에 emp 테이블의 모든 컬럼이 반영.
create view emp_account
as
select empno, ename, job, mgr, hiredate, sal, comm, deptno
from emp;
-- emp 테이블을 복사해서 view를 만들자.
create view emp_view
as
select empno, ename, job, mgr, hiredate, sal, comm, deptno
from emp;
-- emp_view에 데이터를 추가해 보자.
insert into emp_view
    values(9000, 'ANGEL', 'SALESMAN', 7698, sysdate, 1500, 200, 30);

 

- 읽기 전용 view를 만들게 되면 insert, update, delete 쿼리가 안 됨.
- 읽기 전용 view를 만드는 방법 : 쿼리문 맨 마지막에 with read only 문구 추가.

create view emp_view1
as
select * from emp
with read only;

 

- create or replace view : 같은 이름의 view가 있는 경우에는 삭제하고 다시 view를 만들라는 의미.

create or replace view emp_sales
as
select * from emp;

 

- view를 만들 때 그룹함수를 사용시에는 반드시 별칭을 설정해 주어야 함.

-- 부서별로 부서별 급여합계, 부서별 급여 평균을 구한 view를 만들어 화면에 보여주세요.
create view emp_deptno
as
select deptno, sum(sal) "급여합계", avg(sal) "급여평균"
from emp
group by deptno;

 

- view를 만들때 컬럼만 만들고 싶은 경우
  ==> 조건을 말이 안되는 조건을 작성하면 됨.

create or replace view emp_view2
as
select * from emp
where deptno = 1;

-- [문제1] emp 테이블을 이용하여 emp_dept20이라는 view를 만들어 보세요.
-- 단, 부서번호가 20번 부서에 속한 사원들의 사번, 이름, 담당업무, 관리자,
-- 부서번호만 화면에 보여주시기 바랍니다.
create or replace view emp_dept20
as
select empno, ename, job, mgr, deptno
from emp
where deptno = 20;
-- [문제2] emp 테이블에서 각 부서별 최대급여와 최소급여를 보여주는 view를
-- 만들되 sal_view 라는 이름으로 만들어 화면에 보여주세요.
create or replace view sal_view
as
select deptno, max(sal) "최대급여", min(sal) "최소급여"
from emp
group by deptno;
-- [문제] 담당업무가 'SALEAMAN'인 사원의
-- 사번, 이름, 담당업무,입사일, 부서번호를 컬럼으로 하는 view를 만들되
-- emp_sale 이라는 view를 만들어 화면에 보여주세요.
create or replace view emp_sale
as
select empno, ename, job, hiredate, deptno
from emp
where job = 'SALESMAN';

 

 

'Back > Database' 카테고리의 다른 글

시퀀스(SEQUENCE)  (0) 2021.04.07
제약 조건(RESTRICTION)  (0) 2021.04.07
GROPU BY  (0) 2021.04.07
서브 쿼리(SUB QUERY)  (0) 2021.04.07
Oracle(SQL) 기본 제공 함수  (0) 2021.04.07