카테고리 없음
[ORACLE 5일차]view(뷰)/
GoGo개발
2022. 9. 6. 11:44
VIEW
VIEW(뷰)란? 테이블은 아니지만 select 되어진 결과물을 마치 테이블 처럼 보는것(간주하는 것)이다.
VIEW(뷰) 는 2가지 종류가 있다.
첫번째로 inline view 가 있고, 두번째로 stored view 가 있다.
nline view 는 바로 위의 예제에 보이는 V 인 것이다.
즉, select 구문을 괄호( )를 쳐서 별칭(예 : V)을 부여한 것을 말한다.
stored view 는 복잡한 SQL(Structured Query Language == 정형화된 질의어)을 저장하여
select 문을 간단하게 사용하고자 할 때 쓰인다.
그래서 inline view 는 1회성이고, stored view는 언제든지 불러내서 재사용이 가능하다.
1. Stored View (저장된 뷰) 생성하기
create or replace view 뷰명
as
select 문장;
뷰명 으로 되어진 view 가 없으면 create(생성) 하고, 만약에 뷰명 으로 되어진 view 가 이미 존재한다라면
이전에 정의해둔 view를 없애버리고 select 문장 으로 replace(수정)해라는 말이다.
<예제>
inline 뷰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
--- [퀴즈] employees 테이블에서 월급등수가 1등 부터 10등까지 사원들만
--- 사원번호 , 사원명 , 월급 , 월급등수 을 나타내세요.
select employee_id AS 사원번호
, first_name || ' ' || last_name AS 사원명
, nvl(salary + (salary * commission_pct), salary) AS 월급
, rank() over(order by nvl(salary + (salary * commission_pct), salary) desc ) AS 월급등수
from employees
where rank() over(order by nvl(salary + (salary * commission_pct), salary) desc ) <= 10;
-- !!! 오류 !!!
-- rank() 함수는 where 절에 바로 쓸수가 없다.!!!!
select V.*
from
(
select employee_id AS 사원번호
, first_name || ' ' || last_name AS 사원명
, nvl(salary + (salary * commission_pct), salary) AS 월급
, rank() over(order by nvl(salary + (salary * commission_pct), salary) desc ) AS 월급등수
from employees
) V -- V 는 괄호()속의 select 되어져 나온 결과물을 V 라는 이름을 가지는 테이블로 간주해 버린다.
where V.월급등수 <= 10;
|
cs |
sotred 뷰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
create or replace view view_employeerank
as
select employee_id AS 사원번호
, first_name || ' ' || last_name AS 사원명
, nvl(salary + (salary * commission_pct), salary) AS 월급
, rank() over(order by nvl(salary + (salary * commission_pct), salary) desc ) AS 월급등수
from employees;
-- View VIEW_EMPLOYEERANK이(가) 생성되었습니다.
select *
from view_employeerank
where 월급등수 <= 10;
|
cs |