Backend/Oracle DB
19. 가상의 테이블, 뷰(View)
개발개발빈이
2022. 5. 23. 20:34
○ 뷰(View)
① 정의
- 테이블에 대한 가상의 테이블로서 테이블처럼 직접 데이터를 소유하지 않고
검색시에 이용할 수 있도록 정보를 담고 있는 객체 테이블 정보의 부분집합
② 사용목적
- 테이블에 대한 보안기능을 설정해야 하는 경우
- 복잡하고, 자주 사용하는 질의 SQL문을 보다 쉽고 간단하게 사용해야 하는 경우
③ 사용자 계정에 뷰 생성 권한 부여
- 형식) grant create view to 아이디;
--java200202 계정에 대해서 뷰 생성 권한 부여
GRANT CREATE VIEW TO java200202;
○ 뷰 사용하기
① 테이블, 뷰 목록 확인
select * from tab; -- 모든 객체 종류 확인
select * from tab where tabtype='TABLE'; -- 테이블 목록
select * from tab where tabtype='VIEW'; -- 뷰 목록
② 뷰 생성/수정
- 형식) create or replace view 뷰이름
as [실제로 실행할 SQL문]
- replace : 이미 존재하는 뷰의 내용을 수정함
create or replace view test_view --두번째 실행부터는 뷰 수정
as select uname, kor, eng, mat, addr
from sungjuk
where addr in ('Seoul', 'Jeju');
create or replace view test2_view
as select uname as 이름,
kor as 국어,
eng as 영어,
mat as 수학,
addr as 주소 --(alias, 별칭부여) as 생략가능
from sungjuk
where addr in ('Seoul', 'Jeju');
③ 뷰 조회
- 생성된 뷰는 테이블처럼 사용가능하다
select * from test_view;
select * from test2_view;
③ 뷰 세부 정보 확인
- 데이터 사전(user_views 테이블)에서 뷰의 세부 정보 확인
select * from user_views;
select text from user_views where view_name='TEST_VIEW';
④ 뷰 삭제하기
- 형식) drop view 뷰이름
drop view test_view;
● PRACTICE 연습문제
Q) 뷰(view)를 이용해서 수강신청한 학생들의 학번, 총학점 구하기
-- 1) 수강신청 과목의 학점을 가져와서 학번별 총학점 구하기
select SU.hakno as 학번, sum(GW.ghakjum) || '학점' as 총학점
from tb_sugang SU join tb_gwamok GW
on SU.gcode=GW.gcode
group by SU.hakno;
-- 2) 1)의 결과를 test3_view 뷰 생성하기
create or replace view test3_view
as
select SU.hakno as 학번, sum(GW.ghakjum) || '학점' as 총학점
from tb_sugang SU join tb_gwamok GW
on SU.gcode=GW.gcode
group by SU.hakno;
-- 3) 2)의 뷰와 학생테이블을 조인해서 학번, 이름 총학점 출력하기
select uname, 학번, 총학점
from tb_student ST join test3_view TV
on ST.hakno=TV.학번
order by ST.hakno;