본문 바로가기

Database/Oracle

뷰(view)

단순 뷰 : 테이블 그대로를 보여주는 뷰

 

복합 뷰 : 원본 데이터가 아닌 변경된 값을 보여주는 뷰

 

 

『 뷰 생성 』

 

create view [뷰명]

서브쿼리를 통한 뷰 생성

 

뷰는 논리테이블, 가상테이블이며 

테이블은 물리적으로 테이블 데이터가 저장공간을 할당받으며 저장되지만

뷰는 물리적 구조가 없으며, 사용자가 입력한 문장에 대한 텍스트를 저장한다.

 

그러니까 저장된 데이터 자체는 없지만, 사용자는 뷰를 테이블인것 처럼 사용하게 되는 것이다.

 

CREATE문과 REPLACE 문이 있다. 이것은 뷰가 저장하고 있던 SQL 문장, 텍스트를 대체시키는 것이다.

 

조인의 경우, 테이블만이 아닌 뷰 또한 조인이 가능하다.

 

『 뷰 제거 』

 

DROP VIEW [뷰명]; // 뷰가 가진 텍스트를 제거하므로, 테이블에는 지장이 없다.

 

 

『인라인 뷰』

 

from 절에서 사용되는 서브쿼리.

이 문장이 실행되는 동안 from 절 두번째의 결과 b(as) 를 테이블 처럼 사용할 수 있음.

 

 

 

 

『TOP-N 분석』

열에서 가장 큰 n개의 값 (행의 수 제어), 가장 작은 n개의 값 요청

 

rownum은 출력이 되는(실행 결과의) 행의 번호를 가리킨다.

sysdate와 같은 시스템 함수이다.

 

 

다음과 같이 rownum을 where절에 사용하면 행의 수를 제어할 수 있다. [rownum보다 큰값은 찾을 수 없다]

 

 

보기에는 월급 많이 받는 3명까지 출력하라는 문장 같은데, 이는 옳지 않다.

rownum이 먼저 실행되고 그 결과를 정렬하기 때문이다.

 

다음과 같이 rownum와 인라인뷰를 같이 사용하는 것을 TOP-N 분석이라 한다.

이 때, select절의 employee_id 등은 employees 테이블에서 결과를 가져오는 것이 아닌

인라인뷰에서 결과를 가지고 오는 것이다.

 

 

avg(salary)에 대해 select avg(salry)는 집계함수를 두번 사용하는 상황이 되니

as문을 이용해 따로 명시해주었다.

그리고 그룹함수를 취해 각 [부서별]의 평균 급여를 내림차순하였다.

'Database > Oracle' 카테고리의 다른 글

데이터 제어어 (DCL)  (0) 2021.01.06
시퀀스  (0) 2021.01.06
제약 조건 설정  (0) 2021.01.06
데이터 정의어 [DDL] 의 활용  (0) 2021.01.05
데이터 조작어 [DML] 와 트랜잭션  (0) 2021.01.05