뷰(View)
1.가상의 테이블 : 사용시는 테이블과 동일하게..
2.장점
1) 편리성 : 여러번 반복되는 긴 명령어를 간단히 사용할 수 있다.
2) 보안성 : 주민번호등 특정한 정보가 노출되지 않게 할 수 있다.
3.뷰 : SQL 명령이 저장된다.
cf) batch화일과 유사
4.조회목적으로만 사용(select)
5.inline view : select문내에 포함된 뷰(임시뷰)
desc user_views
--뷰내용 확인하기
select text from user_views where view_name='GOGEK_VIEW_BIRTHDAY'
--남자직원출력
select * from sawon where sasex='남자'
--뷰로 생성
create or replace view sawon_view_man
as
select * from sawon where sasex='남자'
--뷰사용
select * from sawon_view_man
--여자만 뷰로 생성
create or replace view sawon_view_women
as
select * from sawon where sasex='여자'
--뷰사용
select * from sawon_view_women
--사원테이블
create or replace view sawon_view_sahire
as
select
sabun,saname,sasex,deptno,sajob,sahire,samgr,sapay,
to_char(sahire,'YYYY') 입사년도,
to_char(sahire,'MM') 입사월,
to_char(sahire,'DD') 입사일
from sawon
--편리성
select * from sawon_view_sahire
--고객테이블
select * from gogek
update gogek set gojumin='021212-3123456' where gobun=15;
create or replace view gogek_view_birthday
as
select gobun,goname,goaddr,godam,
case
when substr(gojumin,8,1) in(1,3) then '남자'
else '여자'
end as gosex,
to_number(substr(gojumin,1,2)) +
(
case
when substr(gojumin,8,1) in(1,2) then 1900
else 2000
end
)
as 출생년도,
to_number(substr(gojumin,3,2)) 월,
to_number(substr(gojumin,5,2)) 일
from gogek
--보안성 : 주민번호정보가 노출되지 않는다..
select * from gogek_view_birthday
--test1에게는 gogek_view_birthday에 대한 select권한만 부여
grant select on gogek_view_birthday to test1
-- inline view
--case 1
select sabun,saname,sapay,(select max(sapay) from sawon) 최대급여 from sawon;
--case 2 : inline
create or replace view sawon_view_rank
as
select sabun,saname,rank() over(order by sapay desc) as rank,sapay from sawon
--급여순위 5위출력
select * from sawon_view_rank where rank <=5
select * from
(select sabun,saname,rank() over(order by sapay desc) as rank,sapay from sawon)--inline view
where rank<=5
--case 2
select * from
(select s.* ,rank() over(order by sapay desc) as rank
from
(select * from sawon) s -- alias명 :임시테이블(뷰)명
)
where rank between 1 and 10
--고객테이블에서 나이순 번호를 매기기
select * from gogek_view_birthday
order by 출생년도
'Programming > Oracle' 카테고리의 다른 글
[2일차] 테이블생성 및 DML 기초 (0) | 2013.08.27 |
---|---|
[1일차] 계정생성 (0) | 2013.08.27 |
[5일차-2] 날짜함수 정리 (0) | 2013.08.26 |
[5일차-1] 통계_그룹함수 (0) | 2013.08.26 |
sqlDeveloper로 DB사용자 추가 하기 및 sql 질의 싱행해 보기 (0) | 2013.08.21 |