본문 바로가기

데이터베이스/Oracle

※ 뷰(View)

테이블처럼 객체의 한 종류. 하나 이상의 테이블을 합하여 만든 가상의 테이블

 

뷰의 생성

CREATE VIEW 뷰이름 [(열이름 [,...n])]
AS <SELECT 문>
-- 뷰이름 : 생성할 뷰의 이름
-- 열이름 : 뷰에서 사용할 열의 이름
SELECT *
FROM Book
WHERE bookname Like '%축구%';

--뷰로 만들기
CREATE VIEW vw_Book
AS SELECT *
   FROM Book
   WHERE bookname LIKE '%축구%';

복잡한 sql구문을 view로 만들어두면 단순하게 사용가능

실제 데이터가 저장되는 게 아니라 뷰의 정의가 DBMS에 저장되는 것

뷰객체 : 빈번히 사용하는 SELECT 구문을 단순화, 컬럼보안강화

--주문번호, 주문자아이디, 주문상품번호, 상품명, 가격, 주문수량, 주문일자를 출력하시오
SELECT info.order_no, order_id,
       order_prod_no,
       prod_name, prod_price,
       order_quantity,
       order_dt	
FROM order_info info JOIN order_line line ON (info.order_no = line.orders_line_no)
                     JOIN product p ON (line.order_prod_no = p.prod_no);

CREATE VIEW vw_order
AS SELECT info.order_no, order_id,
          order_prod_no,
          prod_name, prod_price,
          order_quantity,
          order_dt
FROM order_info info JOIN order_line line ON (info.order_no =  line.order_line_no)
                     JOIN product p ON (line.order_prod_no = p.prod_no);
					 
SELECT *
FROM vw_order;

뷰테이블 별칭명을 컬럼명으로 써야함

--view는 ALTER가 없어서 
CREATE OR REPLACE view vw_order
AS SELECT info.order_no "주문번호", order_id "주문자아이디",
           order_prod_no "상품번호",
           prod_name "상품명", prod_price "상품가격",
           order_quantity "주문수량",
           order_dt "주문일자"
FROM order_info info JOIN order_line line ON (info.order_no =  line.order_line_no)
                     JOIN product p ON (line.order_prod_no = p.prod_no);
					 
SELECT *
FROM vw_order;

SELECT 주문번호 FROM vw_order; --OK
SELECT order_no FROM vw_order; -ERROR, 컬럼을 못찾아낸다

DROP VIEW vw_order;

 

'데이터베이스 > Oracle' 카테고리의 다른 글

exerd 플러그인 설치하기  (0) 2023.08.23
인덱스  (0) 2023.08.23
키, 셀렉션, 프로젝션  (0) 2023.08.22
데이터베이스 개념, 컴퓨터에 데이터를 저장하는 방법  (0) 2023.08.22
무결성 제약조건 예제  (0) 2023.08.22