SQL VIEW(뷰)

뷰는 시각화된 테이블입니다.

이 장에서는 뷰를 생성, 업데이트, 제거하는 방법을 설명합니다.

SQL CREATE VIEW 문

뷰는 무엇인가요?

SQL에서 뷰는 SQL 문장의 결과 집합을 기반으로 한 시각화된 테이블입니다.

뷰는 행과 열을 포함하고 있으며, 실제 테이블과 같습니다. 뷰의 필드는 하나나 여러 개의 데이터베이스의 실제 테이블에서의 필드입니다. SQL 함수, WHERE 및 JOIN 문구를 뷰에 추가할 수 있으며, 이러한 것이 단일 테이블에서 오는 것처럼 데이터를 제공할 수 있습니다.

주의사항:데이터베이스의 설계와 구조는 뷰 내의 함수, where, join 문구에 영향을 받지 않습니다.

SQL CREATE VIEW 문법

CREATE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

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

SQL CREATE VIEW 예제

뷰를 사용할 수 있습니다. 쿼리 내부, 스토리지 프로시저 내부, 또는 다른 뷰 내부에서 사용할 수 있습니다. 함수, join 등을 뷰에 추가하여 사용자에게 원하는 데이터를 정확하게 제공할 수 있습니다.

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 [1997년 카테고리 판매] AS
SELECT DISTINCT CategoryName,Sum(ProductSales) AS CategorySales
FROM [1997년 제품 판매]
GROUP BY CategoryName 

위의 뷰와 같이 조사할 수 있습니다:

SELECT * FROM [1997년 카테고리 판매]

조회에 조건을 추가할 수도 있습니다. 지금은 "Beverages" 카테고리의 전체 판매량을 확인하고 싶습니다:

SELECT * FROM [1997년 카테고리 판매]
WHERE CategoryName='Beverages'

SQL 뷰 업데이트

아래의 문법을 사용하여 뷰를 업데이트할 수 있습니다:

SQL CREATE OR REPLACE VIEW 문법
CREATE OR REPLACE VIEW view_name AS
SELECT 열 이름(들)
FROM 테이블 이름
WHERE 조건

지금, 우리는 "Current Product List" 뷰에 "Category" 열을 추가하고 싶습니다. 다음 SQL로 뷰를 업데이트하겠습니다:

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

SQL 뷰 취소

DROP VIEW 명령을 사용하여 뷰를 지울 수 있습니다.

SQL DROP VIEW 문법

DROP VIEW view_name