SQL CREATE VIEW Statement
SQL에서 view는 SQL구문의 결과셋에 기반한 가상의 테이블이다.
view는 행과 열을 포함하며 실제 테이블과 같다. view의 필드들은 하나 또는 그 이상의 테이블의 필드들로 이루어져있다.
view에 SQL함수, WHERE, JOIN구문 등을 추가하여 하나의 테이블에서 가져온 데이터들 처럼 보여질 수 있다.
CREATE VIEW Syntax
CREATE VIEW view_name AS
SELECT column1, colun2, ...
FROM table_name
WHERE condition;
Note: view는 항상 업데이트 된 데이터들을 보여준다. 유저들이 view에 쿼리할 때마다 view의 SQL구문을 통하여 데이터베이스 엔진이 재생성한다.
SQL CREATE VIEW Examples
Current Product List라는 이름의 view를 생성한다.
이 view는 생산가능한 상품들을 모두 보여준다.
CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued = No;
생성한 view를 불러옴(불러올 때마다 업데이트가 된 view가 나타남)
SELECT * FROM [Current Product List];
새로운 view를 하나 더 생성해보기
평균 UnitPrice보다 높은 상품 가져오기
CREATE VIEW [Product Above Average Price] AS
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM Products);
생성한 view 불러오기
SELECT * FROM [Products Above Average Price];
이미 만들어진 view를 참고하여 view를 새롭게 생성할 수 있다.
또 다른 view [Product Sales for 1997]로부터 CategoryName과 ProductSales의 합(내장함수 Sum사용)을 CategoryName으로 그룹화하여 가져오기
CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName, Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName;
생성한 view 불러오기
SELECT * FROM [Category Sales For 1997];
SQL Updating a View
view 업데이트하기
SQL CREATE OR REPLACE VIEW Syntax
CREATE OR REPLACE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;
이렇게 만들었던 [Current Product List] view에 Category column을 추가하고 싶으면
CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued = No;
다음과 같이 Category를 추가할 수 있다.
CREATE OR REPLACE VIEW [Current Product List] AS
SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued = No;
SQL Dropping a View
SQL DROP VIEW Syntax
DROP VIEW view_name;
Comments