sector
2023. 8. 23. 19:36
※ 뷰(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;