본문 바로가기

SQL

SQL [18] - 가상 테이블 View

<View>

가상 테이블 : 물리적으로 메모리 할당이 없다. 테이블과 같이 조인 가능, from 구문에 기술할 수 있다. 

DB 내 개별 사용자로 접속시 view 생성 권한이 처음에는 없다. 그래서 처음에 오류가 발생한다.
ㄴ 관리자 계정으로 개별 사용자에게 view 생성 권한을 받아야 함
ㄴ 관리자 계정에서 grant create view to 사용자 ; 라는 구문을 입력해줘야 함

 

1. 뷰 생성과 수정하기 (Create or Replace)

-- Quiz. 사원 테이블에서 사원번호, 사원이름, 직업 정보만 조회할 수 있는 view_emp 뷰 생성하기

(1) 뷰생성 (create는 뷰생성, replace는 존재하는 뷰를 수정하는 구문인데, create or replace로 보통 사용함)

create or replace view view_emp
as select empno, ename, job from emp ;

 

(2) 뷰조회

select * from view_emp;

-- Quiz. view_emp 뷰를 수정하기 emp 테이블에서 empno, ename, job 컬럼을 조회하기
-- 단, job의 값이 CLERK 정보만 조회되도록 view_emp 뷰를 생성하고 조회하기

(1) 뷰생성
create or replace view view_emp
as select empno, ename, job from emp where job = 'CLERK';

 

(2) 뷰조회

select * from view_emp;

2. 뷰 삭제하기 (Delete)

(1) 뷰삭제

delete from v_emp where empno = 7369;

 

(2) 원본 데이터도 삭제됨 -> 따라서 위험함
select * from emp where empno = 7369;

 

(3) Rollback 후 다시 조회 

 

<복합뷰>

두 개 이상의 테이블을 참조하여 생성된 뷰 

-- 교수 번호, 교수 이름, 소속 학과 명을 조회할 수 있는 v_prof_dept 뷰 생성하기 

(1) 테이블 조회

select * from professor;
select * from department;

professor
department

 

(2) 뷰 생성 (profno, name은 교수테이블에서, dname은 department 테이블에서 불러옴)
create or replace view v_prof_dept
as select p.profno, p.name, d.dname from professor p, department d
where p.deptno = d.deptno;

 

(3) 뷰 조회
select * from v_prof_dept;

'SQL' 카테고리의 다른 글

SQL [20] - PL/SQL  (0) 2021.05.10
SQL [19] - Sequence  (0) 2021.05.10
SQL [17] - DDL(create, alter, drop, truncate)과 제약조건  (0) 2021.05.09
SQL [16] - Delete  (0) 2021.05.05
SQL [15] - Update  (0) 2021.05.05