본문 바로가기
Back-End/Database

[SQL] view

by 찐코딩 2021. 10. 5.

 View

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

 

View를 사용하는 이유 

1) 보안 관리를 위해 사용함(중요함) 
==> 보안 등급에 맞추어 컬럼의 범위를 정해서 조회가 가능하도록 할 수 있음. 

 

view 생성하는 방법

형식)  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 *
from emp;

 

읽기전용 view 생성하는 방법

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

CREATE VIEW EMP_VIEW1
AS
SELECT *
FROM EMP
WITH READ ONLY;

 

 

같은 이름의 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;

 

2) 사용자의 편의성을 제공함. 

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

create or replace view emp_view2
as
select * from emp
where deptno = 1;	-- 부서번호가 1인 부서는 없다

 

[문제2] emp 테이블에서 각 부서별 최대급여와 최소급여를 보여주는 view를 만들되,

 sal_view 라는 이름으로 만들어 화면에 보여주세요.


create or replace view sal_view
as
select deptno, max(sal) "최대급여", min(sal) "최소급여"
from emp
group by deptno;

 

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

[SQL] 서브 쿼리  (0) 2021.10.05
[SQL] 컬럼 속성(제약 조건)  (0) 2021.10.05
[SQL] 숫자 관련 기본 함수  (0) 2021.10.05
[SQL] dual 테이블/ 기본 함수_1(날짜 관련 / 문자 관련)  (0) 2021.10.05
[SQL] JOIN  (0) 2021.10.05

댓글