SQL Views

w3schools.com 을 참조하여 해석해본 자료입니다.

기본적으로 실행문의 결과값은 사이트에 직접가서 실행해보고 결과를 확인하는것이 좋습니다.

결과값이 너무 큰 경우 일부만 발췌하거나 기록하지 않았습니다.

SQL CREATE VIEW Statement

SQL에서 뷰는 SQL 문의 결과 세트를 기반으로하는 가상 테이블입니다.

뷰에는 실제 테이블과 마찬가지로 행과 열이 포함됩니다. 뷰의 필드는 데이터베이스에 있는 하나 이상의 실제 테이블의 필드입니다.

SQL 함수, WHERE 및 JOIN 문을 뷰에 추가하고 데이터가 하나의 단일 테이블에서 온 것처럼 데이터를 표시 할 수 있습니다.

CREATE VIEW Syntax

CREATE VIEW view_name AS
SELECT column1, column2, ...
FROM table_name
WHERE condition;

Note: 뷰에는 항상 최신 데이터가 표시됩니다! 데이터베이스 엔진은 사용자가 뷰를 쿼리 할 때마다 뷰의 SQL 문을 사용하여 데이터를 다시 작성합니다.


SQL CREATE VIEW Examples

Northwind 데이터베이스가 있으면 기본적으로 여러보기가 설치되어 있음을 알 수 있습니다.

“Current Product List” 뷰에는 “Products” 테이블의 모든 활성 제품 (중단되지 않은 제품)이 나열됩니다. 뷰는 다음 SQL로 작성됩니다:

CREATE VIEW [Current Product List] AS
SELECT ProductID, ProductName
FROM Products
WHERE Discontinued = No;

그런 다음 다음과 같이 뷰를 쿼리 할 수 있습니다:

SELECT * FROM [Current Product List];

Northwind 예제 데이터베이스의 또 다른 뷰는 “Products”테이블의 모든 제품을 평균 단가보다 높은 단가로 선택합니다:

CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, UnitPrice
FROM Products
WHERE UnitPrice > (SELECT AVG(UnitPrice) FROM Products);

위의 뷰는 다음과 같이 쿼리 할 수 있습니다:

SELECT * FROM [Products Above Average Price];

Northwind 데이터베이스의 다른 뷰는 1997 년 각 카테고리의 총 판매량을 계산합니다.이 뷰는 “Product Sales for 1997”라는 다른뷰에서 해당 데이터를 선택합니다.

CREATE VIEW [Category Sales For 1997] AS
SELECT DISTINCT CategoryName, Sum(ProductSales) AS CategorySales
FROM [Product Sales for 1997]
GROUP BY CategoryName;

위의 뷰는 다음과 같이 쿼리 할 수 있습니다:

SELECT * FROM [Category Sales For 1997];

쿼리에 조건을 추가 할 수도 있습니다. “음료수” 카테고리에 대해서만 총 판매를 봅시다:

SELECT * FROM [Category Sales For 1997]
WHERE CategoryName = 'Beverages';

SQL Updating a 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” 뷰에 “Category”열을 추가하려고 합니다. 다음 SQL로 뷰를 업데이트합니다.

CREATE OR REPLACE VIEW [Current Product List] AS
SELECT ProductID, ProductName, Category
FROM Products
WHERE Discontinued = No;

SQL Dropping a View

DROP VIEW 명령으로 뷰를 삭제할 수 있습니다.

SQL DROP VIEW Syntax

DROP VIEW view_name;

Comments