DataBase/SQL

SQL 뷰

프로그래멍 2020. 6. 29. 15:49

서브쿼리는 FROM 구에서도 기술할 수 잇었다. 여기서 FROM 구에 기술된 서브쿼리에 이름을 붙이고 데이터베이스 객체화하여 쓰기 쉽게 한 것을 뷰라고 한다.

 

1. 뷰

데이터베이스 객체란 테이블이나 인덱스 등 데이터베이스 안에 정의하는 모든것을 말한다.

 

뷰 역시 그중 하나이다.

 

SELECT 명령은 객체가 아니다.

이처럼 본래 DB 객체로 등록할 수 없는 SELECT 명령을, 객체로서 이름을 붙여 관리할 수 있도록 한 것이 뷰이다.

 

뷰 생성과 사용

 

-가상 테이블

뷰는 데이블처럼 취급할 수 있지만 '실체가 존재하지 않는다'라는 의미로 '가상 테이블'이라 불린다.

INSERT나 UPDATE, DELETE 명령에서도 조건이 맞으면 가능하지만 사용에 주의할 필요가 있다.

 

2. 뷰 작성과 삭제

DROP VIEW veiw_sample54;

3. 뷰의 약점

뷰는 저장공간을 소비하지 않는 대신 CPU 자원을 사용한다.

검색뿐만 아니라 ORDER BY로 정렬하거나 GROUP BY로 집게 할 수 있습니다. 이러한 처리는 계산능력을 필요로 하기 대문에 컴퓨터의 CPU를 사용한다.

 

-머티리얼라이즈드 뷰(Materialized View)

뷰를 중첩해서 사용하는 경우에 처리 속도가 떨어지기 쉽다.

이 같은 상황을 회피하기 위해 사용할 수 있는 것이 머티리얼라이즈드 뷰이다.

 

일반적인 뷰는 데이터를 일시적으로 저장했다가 쿼리가 실행 종료될 때 함께 삭제된다.

그에 비해 머티리얼라이즈드 뷰는 데이터를 일시적으로 저장해 사용하는 것이 아니라 테이블처럼 저장장치에 저장해두고 사용한다.

 

처음 참조되었을 때 데이터를 저장해둔다.

이후 다시 사용할 때 저장해 둔 데이터를 그대로 사용한다.

다반 뷰에 지정된 테이블의 데이터가 변경된 경우에는 select 명령을 재실행하여 데이터를 다시 저장한다.

변경 유무를 확인하여 재실행하는건 RDBMS가 자동으로 실행한다.

 

오라클과 DB2에서만 지원한다.

 

-함수 테이블

상관 서브쿼리는 뷰로 만들수 없다.

대신 이 같은 뷰의 약점을 함수 테이블을 사용하여 회피할 수 있다.

함수에는 인수를 지정할 수 있기 때문에 인수의 값에 따라  where 조건을 붙여 결괏값을 바꿀 수 있다. 그에 따라 상관 서브쿼리처럼 동작할 수 있다.