SQL VIEW(ビュー)

ビューは可視化されたテーブルです。

この章では、ビューの作成、更新、削除方法について説明します。

SQL CREATE VIEW 文

ビューとは何ですか?

SQLでは、ビューはSQL文の結果セットに基づく可視化されたテーブルです。

ビューは行と列を含み、実際のテーブルと同じです。ビューのフィールドは、1つまたは複数のデータベースの実際のテーブルのフィールドから来ています。SQL関数、WHERE、JOIN文をビューに追加し、これらが単一のテーブルから来たかのようにデータを提供できます。

注記:ビュー内の関数、WHERE、またはジョイン文がデータベースの設計や構造に影響を与えません。

SQL CREATE VIEW 文法

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

注記:ビューは常に最新のデータを表示します。ユーザーがビューをクエリするたびに、データベースエンジンは SQL ステートメントを使用してデータを再構築します。

SQL CREATE VIEW インスタンス

ビューは、クエリの内部、ストアドプロシージャの内部、または別のビューの内部から使用できます。ビューに関数やジョインなどを追加することで、ユーザーに希望するデータを正確に提供できます。

サンプルデータベースの 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]

クエリに条件を追加することもできます。現在、"Beverages" クラスの全ての売上を見る必要があります:

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

SQL ビュー更新

以下の文法を使用してビューを更新できます:

SQL CREATE OR REPLACE VIEW 文法
CREATE OR REPLACE VIEW view_name AS
SELECT column_name(s)
FROM table_name
WHERE condition

現在、"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