SQL 강좌 50. SQL Views

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