1. 뷰(View)?
1) 정의
우리가 만든 논리적 형테의 테이블을 하나의 테이블로 저장해서 사용하는 것을 뷰(View)라고 한다.
테이블에 대한 가상의 테이블로써 테이블처럼 직접 데이터를 소유하지 않고 검색시에 이용할 수 있도록 정보를 담고 있는 객체 테이블 정보의 부분집합이다.
2) 사용목적
- 테이블에 대한 보안기능을 설정해야 하는 경우
- 복잡하고, 자주 사용하는 질의 SQL문을 보다 쉽고 간단하게 사용해야 하는 경우
3) java202207 계정에 대해서 뷰 생성 권한 부여
- grant create view to java202207
4) 뷰 생성 및 수정 형식
create or replace view 뷰이름 -> replace : 이미 존재하는 뷰의 내용을 수정함
as [SQL문]
2. 테이블과 뷰 목록 확인하기
select * from tab; -- 모든 객체 종류 확인
select * from tab where tabtype='TABLE'; -- 테이블 목록
select * from tab where tabtype='VIEW'; -- 뷰 목록
3. 뷰 사용해보기
1) 성적테이블에서 필요한 데이터 조회하기
이전에 만들어두었던 성적 테이블을 사용하여 뷰를 만들어보자.
성적 테이블의 내용은 아래와 같다.
-- sungjuk 테이블 생성
create table sungjuk(
sno int not null --일련번호
,uname varchar(50) not null
,kor int not null
,eng int not null
,mat int not null
,tot int
,aver int
,addr varchar(50) --주소
,wdate date --등록일(년월일시분초)
);
● [sungjuk 테이블 입력 데이터]
insert into sungjuk(sno, uname, kor, eng, mat, addr, wdate)
values(sungjuk_seq.nextval,'솔데스크', 90, 85, 95, 'Seoul',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'무궁화',40,50,20,'Seoul',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'진달래',90,50,90,'Jeju',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'개나리',20,50,20,'Jeju',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'봉선화',90,90,90,'Seoul',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'나팔꽃',50,50,90,'Suwon',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'선인장',70,50,20,'Seoul',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'소나무',90,60,90,'Busan',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'참나무',20,20,20,'Jeju',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'홍길동',90,90,90,'Suwon',sysdate);
insert into sungjuk(sno,uname,kor,eng,mat,addr,wdate)
values(sungjuk_seq.nextval,'무궁화',80,80,90,'Suwon',sysdate);
-- 총점(tot), 평균(aver) 넣기
update sungjuk set tot=kor+eng+mat, aver=(kor+eng+mat)/3;
이 성적 테이블에서 서울, 제주 지역에 사는 사람들의 이름, 국영수 성적, 주소를 조회해보았다.
-- 주소가 서울, 제주 지역의 이름, 국, 영, 수, 주소를 조회하시오
select uname, kor, eng, mat, addr
from sungjuk
where addr in ('Seoul', 'Jeju');
이때 이 테이블을 우리는 필요에 따라 AA 테이블로 사용할 때가 있었다.
이 테이블을 저장해두고 필요할 때마다 사용하는 것이 바로 View이다.
이 결과를 View로 생성해보자.
2) 성적 테이블에서 View 만들기
create or replace view test1_view
as
select uname, kor, eng, mat, addr
from sungjuk
where addr in ('Seoul', 'Jeju');
3) 생성된 뷰는 테이블 처럼 활용이 가능하다
select * from test1_view;
4) 별칭(alias)도 view 안에 함께 저장된다
create or replace view test2_view
as
select uname as 이름, kor as 국어, eng as 영어, mat as 수학, addr as 주소
from sungjuk
where addr in ('Seoul', 'Jeju');
select * from test2_view;
'⁂ Oracle DB > : 기본 익히기' 카테고리의 다른 글
[Oracle] #6-5 인덱스(index) (0) | 2022.08.30 |
---|---|
[Oracle] #6-4 프로시져(PL/SQL (Procedural Language)) (0) | 2022.08.30 |
[Oracle] #6-2 계정 생성하기(dbf 파일 만들기, grant) (0) | 2022.08.30 |
[Oracle] #6-1 SQL Developer로 CSV파일 가져오기 (0) | 2022.08.29 |
[Oracle] #5-3 rownum으로 페이징하기 (0) | 2022.08.29 |