본문 바로가기
✨ DBMS/Oracle

[Oracle / SQL] 뷰(VIEW)의 정의와 생성하는 방법

by 환풍 2023. 3. 8.
728x90

뷰(VIEW) 란?

하나 이상의 기본 테이블이나 다른 뷰를 사용해 생성되는 가상의 테이블 공간이다.

모든 데이터에서 일부만 뽑아서 사용할 수도 있으며, 이때 뷰를 정의한 기본 테이블에서 무결성 제약조건은 유지된다.

 

뷰(VIEW)를 만들 수 있게 권한주는 방법

 

1
2
3
4
5
6
7
8
9
10
11
-- VIEW(가상 테이블)
SELECT EMPNO, ENAME, EMP.DEPTNO, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
 
 
--VIEW 생성
CREATE VIEW EMP_VIEW AS 
SELECT EMPNO, ENAME, EMP.DEPTNO, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO
cs

 

이는 SYSTEM 계정에서 뷰를 만들 수 있는 권한을 만들어주지 않아서 이다.

SYSTEM모드로 가서 MYDB에 뷰를 만들 수 있는 권한을 만들어준다.


 

1
2
3
4
5
--VIEW 생성
CREATE VIEW EMP_VIEW AS 
SELECT EMPNO, ENAME, EMP.DEPTNO, DNAME
FROM EMP, DEPT
WHERE EMP.DEPTNO = DEPT.DEPTNO;
cs

 

 

1
SELECT * FROM EMP_VIEW;
cs

 

이거는 VIEW이다. TABLE이 아니다. 

 

뷰는 SELECT 한 결과를 바탕으로 뷰를 만들라는 것이다. 

즉,

뷰는 데이터가 들어간게 아니다. 가상의 공간으로, 그냥 쿼리 실행하는 것이다.

 


 

 

1
2
3
4
CREATE VIEW EMP_VIEW_2 AS
SELECT EMPNO, ENAME
FROM EMP
WHERE DEPTNO= 20;
cs
1
SELECT * FROM EMP_VIEW_2;
cs

EMP 뷰를 만들고 실행을 해보았다. SELECT에 넣어준 EMPNO와 ENAME만 조회됐다.

 

1
SELECT * FROM EMP;
cs

EMP 테이블에는 JOB, SAL, COMM 등등 데이터가 더있다.

 

1
SELECT SAL FROM EMP;
cs

 

1
SELECT SAL FROM EMP_VIEW_2;
cs

EMP 테이블엔 SAL이 있는데, 뷰를 만들어 줄때 SAL 데이터를 넣어주지 않았기 때문에 데이터가 없다고 나온다.

 

이와 같이 가상의 테이블 공간을 만들어 view에 저장한 다음, 적절한 데이터를 뽑아쓸 때 유용해서 많이 쓴다.

 

뷰는 복잡한 질의문을 단순하게 만들어 줄 수있으며, 데이터의 중복성을 최소화 할 수 있는 장점이 있다.

또한, 보안에도 도움이 된다.

 

 

 

반응형

댓글