본문 바로가기
Database/SQL

[SQL] SQL 고급문법 - 뷰

by 과외선생J 2020. 11. 23.
반응형

안녕하세요 과외선생 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

댓글