ddingz 2021. 8. 25. 23:24

view는 하나 이상의 테이블을 합하여 만든 가상의 테이블이다.
합한다는 말은 SELECT 문을 통해 얻은 최종 결과를 뜻하며, 뷰는 이러한 결과를 가상의 테이블로 정의하여 실제 테이블처럼 사용할 수 있도록 만든 데이터베이스 개체이다.
뷰의 장점은 다음과 같다.

  • 편리성 : 여러 테이블에서 데이터를 가져와 하나의 테이블로 정의함으로써 질의 작성이 간단하게 된다. 또 미리 작성된 질의를 뷰로 정의해 두면 질의 재사용이 가능하다.
  • 보안성 : 원본 테이블에서 보안이 필요한 속성을 제외하고 새로운 테이블을 정의하여 사용자에게 제공함으로써 데이터 보안성을 높인다.
  • 논리적 데이터 독립성 : 뷰를 정의하여 응용 프로그램이 사용하게 하면 개념스키마에 정의된 테이블 구조가 변경되어도 응용 프로그램의 변경을 막아 주기 때문에 논리적 데이터 독립성을 제공한다.

연습문제

-- 주소에 '대한민국'을 포함하는 고객들로 구성된 뷰를 만들고 조회하시오. 뷰의 이름은 vw_Customer로 설정하시오.
CREATE VIEW vw_Customer
AS SELECT *
   FROM Customer
   WHERE address LIKE '%대한민국%';
-- Orders 테이블에서 고객이름과 도서이름을 바로 확인할 수 있는 뷰를 생성한 후, '김연아' 고객이 구입한 도서의 주문번호, 도서이름, 주문액을 보이시오.
CREATE VIEW vw_Orders (orderid, custid, name, bookid, bookname, saleprice, orderdate)
AS SELECT od.orderid, od.custid, cs.name, od.bookid, bk.bookname, od.saleprice, od.orderdate
   FROM Orders od, Customer cs, Book bk
   WHERE od.custid = cs.custid AND od.bookid = bk.bookid;
-- 앞에서 생성한 뷰 vw_Customer는 주소가 '대한민국'인 고객을 보여준다. 이 뷰를 '영국'을 주소로 가진 고객으로 변경하시오. phone 속성은 필요 없으므로 포함하지 마시오.
CREATE OR REPLACE VIEW vw_Customer (custid, name, address)
AS SELECT custid, name, address
   FROM Customer
   WHERE address LIKE '%영국%';
-- 앞서 생성한 뷰 vw_Customer를 삭제하시오.
DROP VIEW vw_Customer;