데이터베이스 15 - 뷰

neulilanikka·2023년 3월 12일
0

※ 뷰(view) : 하나 이상의 테이블을 합하여 만든 가상의 테이블

☞ 장점

· 편리성 및 재사용성 : 자주 사용되는 복잡한 질의를 뷰로 미리 정의해 놓을 수 있음 → 복잡한 질의를 간단히 작성

· 보안성 : 각 사용자별로 필요한 데이터만 선별하여 보여줄 수 있음. 중요한 질의의 경우 질의 내용을 암호화할 수 있음 → 개인정보(주민번호)나 급여, 건강 같은 민감한 정보를 제외한 테이블을 만들어 사용

· 독립성 제공 : 미리 정의된 뷰를 일반 테이블처럼 사용할 수 있기 때문에 편리함. 또 사용자가 필요한 정보만 요구에 맞게 가공하여 뷰로 만들어 쓸 수 있음 → 원본테이블이 구조가 변하여도 응용에 영향을 주지 않도록 하는 논리적 독립성 제공

☞ 뷰의 특징

· 원본 데이터 값에 따라 같이 변함

· 독립적인 인덱스 생성이 어려움

· 삽입, 삭제, 갱신 연산에 많은 제약이 따름

1) 뷰의 생성

① 기본 문법

CREATE VIEW 뷰이름[(열이름 [, ...n])]

AS SELECT 문

▶Book 테이블에서 '축구'라는 문구가 포함된 자료만 보여주는 뷰

SELECT *

FROM Book

WHERE bookname LIKE '%축구%';

▶ 위 SELECT 문을 이용해 작성한 뷰 정의문

CREATE VIEW vw_Book

AS SELECT *

FROM Book

WHERE bookname LIKE '%축구%';

▶ 주소에 '대한민국'을 포함하는 고객들로 구성된 뷰를 만들고 조회하시오 단, 뷰의 이름은 vw_Customer로 한다

CREATE VIEW vw_Customer​

AS SELECT *

FROM Customer

WHERE address LIKE '%대한민국%';

<결과 확인>

SELECT *

FROM vw_Customer;

▶ 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;

<결과 확인>

SELECT orderid, bookname, saleprice

FROM vw_Orders

WHERE name = '김연아';

2) 뷰의 수정

· 기본 문법

CREATE OR REPLACE VIEW 뷰이름 [(열이름 [, ...n])]

AS SELECT 문

▶ 뷰 vw_Customer는 주소가 대한민국인 고객을 보여준다. 이 뷰를 영국을 주소로 가진 고객으로 변경하시오. phone 속성은 필요 없으므로 포함시키지 마시오

CREATE OR REPLACE VIEW vw_Customer (custid, name, address)

AS SELECT custid, name, address

FROM Customer

WHERE address LIKE '%영국%';

<결과 확인>

SELECT *

FROM vw_Customer;

3) 뷰의 삭제

· 기본 문법

DROP VIEW 뷰이름[, ...n];

▶ 앞서 생성한 뷰vw_Customer를 삭제하시오

DROP VIEW vw_CUstomer;

<결과 확인>

SELECT *

FROM vw_Customer;

profile
Now: Mobile Developer

0개의 댓글