DB에서 뷰는 하나 또는 그 이상의 테이블을 조인하여 만든 새로운 가상 테이블을 의미한다.
EX) 두 개의 테이블이 있다고 가정하자 (member, Payment) 개발자가 회원 별 결제 이력을 조회하고 싶은데, 회사에서 규정상 민감한 개인정보는 제공하고 싶지 않은 경우 뷰를 만들어서 제공하면 된다. 테이블 member 에 있는 민감한 개인정보가 담긴 컬럼을 제외하고 Payment 에서도 카드 번호를 제외한 컬럼만 조인해서 뷰를 만들고 개발자에겐 해당 뷰를 접근시키면 된다.
뷰는 정말 간단하게 생성할 수 있다. 아래와 같이 일반 SELECT 쿼리 위에 CREATE VIEW '신규 뷰 명' AS 문구만 추가하면 된다. SELECT 쿼리에는 기존 뷰 또는 테이블을 조회해 주면 되는데, 개수는 하나부터 사용 가능하다. 즉, 단일 테이블 또는 조인한 형태 모두 가능하다.
CREATE VIEW viewTableEx1 AS (
SELECT CustomerID, OrderID, Quantity
FROM Orders
WHERE ProductID = "P1"
);
-- 2개 이상의 테이블을 조인할 경우
CREATE VIEW viewTableEx2 AS (
SELECT Customer.CustomerName, Orders.Quantity
FROM Customer JOIN Orders
ON Customer.CustomerID = Orders.CustomerID
);
업무를 하다 보면 수많은 테이블을 조인하고, 쿼리만 100 줄이 넘어가는 경우도 적지 않기에 뷰를 미리 구성해 놓는다면 매우 편리하게 조회할 수 있다.
뷰를 읽기 전용으로 만들고 싶은 경우 쿼리 마지막에 'with ready only' 만 추가해주면 된다.
그러면 DML(INSERT, UPDATE, DELETE)은 사용할 수 없기에 외부에 제공할 때 사용하기 좋은 옵션이다.
DROP VIEW viewTableEx2;
SELECT CustomerID, OrderID, Quantity
FROM viewTableEx WHERE CustomerID = "Cus1190";