안녕하세요 과외선생 J입니다.
어쩌다보니... 하루에 포스팅을 3개씩 하는날이 오네요 ...
자, 뷰에 대해서 알아보도록 하겠습니다.
개념은 간단합니다.
뷰 : 질의 결과로 만들어지는 가상의 테이블.
사용 이유 : 편리하니까 !!
만드는 법
create view 뷰이름 [열이름, 열이름, 열이름,,] as select 문 순서라고 합니다.
그냥 한번 만들어 보겠습니다.
create view vw_book as select * from book where bookname like "%축구%";
축구라는 글자가 책이름에 포함되는 모든 책을 가지고 뷰를 생성했습니다. 참 쉽죠?
하지만 이러한 뷰는 실제로 데이터 테이블이 생성되어 저장이 되는 개념이 아니라 뷰의 정의가 DBMS에 저장이 되는 점 참고해주세요~
무슨 말이냐면 우리 눈에 보이는 것은 데이터 테이블과 똑같이 생겨먹었지만 DBMS가 보여주는 방식이 다르다는 겁니다.
예를 들자면 학생에게 중간고사 성적표를 보여주는데 실제로 적혀있는 성적표를 보여주는 것과 각 과목의 선생님들에게 성적을 물어보고 가져와서 보여주는 것의 차이라고 보시면 조금더 쉬우실란가요... ( 먼가 더 어려워진 느낌이..)
다른 예를 들자면 A 라는 것을 우리에게 보여줄 때 데이터로 저장이 되어 있다면 A를 그냥 보여주겠지요 , 하지만 뷰의 형태( 정의를 저장)로 저장이 되어 있다면 '영어 알파벳의 첫글자' 라는 것을 인지하고 찾아서 A를 보여주는 것 정도라고 보시면 되겠습니다.
만들어진 뷰를 보는 방법은 기존의 select 문과 동일합니다.
select * from vw_book;
이번에는 주문테이블, 고객 테이블, 책 테이블에서 각각의 정보들을 가져와서 뷰를 만들어보겠습니다. (책과 동일합니다)
create view vw_orders ( orderid, custid, name, bookid, bookname, saleprice, orderdate)
as select od.orderid, od.custid, cs.name, od.bookid, bok.bookname, od.saleprice, od.orderdate
from orders od, customer cs, book bk
where od.custid=cs.custid and od.bookid=bk.bookid;
확인은 굳이 안해보도록 하겠습니다... 지쳐용
뷰도 당연히 가상의 테이블이니 수정이나 삭제도 가능합니다.
테이블 다루듯이 다뤄주면 되며 다만 수정할 때는 or replace를 추가해서 써야 합니다.
수정 : create or replace view vw_orders ( orderid, custid , name)
as select orderid, custid, name from customer where address like "%대한민국%";
삭제 : drop view vw_orders;
뷰의 정의, 정리, 그리고 사용하는 문법을 알아보았습니다.
공부하시느라 고생하셨습니다. 화이팅입니다!!
'Database > SQL' 카테고리의 다른 글
[SQL] SQL 정규화 총정리 (0) | 2020.11.24 |
---|---|
[SQL] SQL 고급문법 - index (0) | 2020.11.24 |
[SQL] SQL 고급문법 - 부속질의 (0) | 2020.11.23 |
[SQL] SQL 고급문법 - 내장함수 (0) | 2020.11.23 |
[SQL] sqlplus 데이터정의어 (DDL) (3) | 2020.11.18 |
댓글