[SQL] SQL 의 View

제갈창민·2022년 2월 8일
0

learningbook

목록 보기
27/32

1. View

  • FROM 구에 기술된 서브쿼리에 이름을 붙이고 DB를 객체화하여 쓰기 쉽게 한 것
  • 데이터베이스 객체란 테이블이나 인덱스 등 DB안에 정의하는 모든 것
  • View 도 데이터베이스 객체 중 하나이나, SELECT문은 객체가 아님
    -> 이름을 지정할 수도 없고 DB에 등록되지도 않기 때문
  • 즉, View 는 SELECT 명령을 기록하는 데이터베이스 객체

SELECT * FROM (SELECT * FROM sample01) sq; | 서브쿼리를 뷰 객체로 만들면,
SELECT * FROM sample_view_01; | SELECT 문이 "view_01" 이라는 객체로 명명됨
-> 뷰를 작성하는 것으로 복잡한 SELECT 명령을 간략하게 표현할 수 있다.
-> WHERE, GROUP BY 등과 같이 복잡한 명령에서도 사용 가능

  • 뷰는 실체가 존재하지 않는 테이블이라는 의미로 '가상 테이블'이라 불림
  • 저장공간을 가지지않기 때문에 'SELECT'문 에서만 사용하는 것을 권장함


2. View 의 생성과 삭제

  • CREATE VIEW (viewname) AS SELECT (추가 명령문) | AS 생략 불가능(별명이 아니기 때문)
  • DROP VIEW (viewname)


3. View 의 약점과 보완책

1) 저장공간을 필요로 하지 않는 대신 CPU 자원을 사용함
2) 보관하는 데이터양이 많은 경우, 집계처리를 할 때도 뷰가 사용된다면 처리속도가 많이 저하됨
3) 뷰를 구성하는 SELECT 명령은 단독으로도 실행할 수 있어야 하지만, 부모 쿼리와 어떤 식으로든 연관된 서브쿼리의 경우에는 뷰의 SELECT 명령으로 사용할 수 없음

Materialized View

  • 1, 2번 약점을 회피하기 위해 사용할 수 있는 뷰(But, Only use Oracle & DB2)
  • 데이터를 일시적으로 저장해 사용하는 것이 아닌, 테이블처럼 저장장치에 저장해두고 사용함
  • 처음 참조되었을 때 데이터를 저장해두고 이후 다시 참조할 때 그대로 사용하는 방식
  • 다만, 데이터가 변경된 경우 SELECT 명령을 재실행하여 데이터를 다시 저장함

함수 테이블

  • 3번째 약점을 회피하기 위해 함수 테이블을 사용함
  • 함수 테이블은 테이블을 결괏값으로 반환해주는 사용자정의 함수
  • 함수에는 인수를 지정할 수 있기 때문에 인수의 값에 따라 WHERE조건을 붙여 결괏값을 바꿀 수 있으므로 상관 서브쿼리처럼 동작할 수 있게 됨
profile
자기계발 중인 신입 개발자

0개의 댓글