SQL 速習チュートリアル

SQL ビュー (Views)

SQL のビュー (View) は、SQL ステートメントの結果セット (Result-set) に基づいた仮想テーブル (Virtual table) です。

ビューは、実際のテーブルと同様に「行」と「列」で構成されます。ビュー内のフィールドは、データベース内にある 1 つ以上の実際のテーブルから取得されたものです。

ビューには SQL ステートメントや関数を追加することができ、あたかも 1 つのテーブルからデータが提供されているかのように提示することが可能です。

1. SQL CREATE VIEW ステートメント

ビューは CREATE VIEW ステートメントを使用して作成します。

1.1 CREATE VIEW の構文

CREATE VIEW ビュー名 AS
SELECT カラム1, カラム2, ...
FROM テーブル名
WHERE 条件;

       注記: ビューは常にリアルタイムデータを表示します。データベースエンジンは、データそのもののコピーを保存するのではなく、ビューの「定義」(SELECT ステートメント)のみを保存します。

1.2 CREATE VIEW の使用例

以下の SQL は、ブラジルの顧客のみを表示する「Brazil Customers」という名前のビューを作成します。

-- ブラジルの顧客を表示するビューを作成
CREATE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = 'Brazil';

作成したビューに対してクエリを実行するには、以下の SQL 構文を使用します。

-- ビューを通常のテーブルのように検索
SELECT * FROM [Brazil Customers];

次の SQL は、平均価格よりも高い価格の製品を「Products」テーブルから選択する「Products Above Average Price」という名前のビューを作成します。

-- 平均価格以上の製品を表示するビューを作成
CREATE VIEW [Products Above Average Price] AS
SELECT ProductName, Price
FROM Products
WHERE Price > (SELECT AVG(Price) FROM Products);

このビューをクエリするには、以下の SQL 構文を使用します。

-- ビューを検索
SELECT * FROM [Products Above Average Price];

2. ALTER VIEW ステートメント (SQL Server)

SQL Server では、ALTER VIEW ステートメントを使用して既存のビューを更新(再定義)できます。

2.1 ALTER VIEW の構文

ALTER VIEW ビュー名 AS
SELECT カラム1, カラム2, ...
FROM テーブル名
WHERE 条件;

以下の SQL は、「Brazil Customers」ビューに「City」カラムを追加します。

-- ビュー定義を更新し、Cityカラムを追加
ALTER VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = 'Brazil';

3. CREATE OR REPLACE VIEW ステートメント (MySQL と Oracle)

MySQL および Oracle では、CREATE OR REPLACE VIEW ステートメントを使用してビューを更新します。

3.1 CREATE OR REPLACE VIEW の構文

CREATE OR REPLACE VIEW ビュー名 AS
SELECT カラム1, カラム2, ...
FROM テーブル名
WHERE 条件;

以下の SQL は、「Brazil Customers」ビューに「City」カラムを追加します。

-- ビューが存在すれば置換し、Cityカラムを追加
CREATE OR REPLACE VIEW [Brazil Customers] AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = 'Brazil';

4. DROP VIEW ステートメント

ビューを削除するには、DROP VIEW ステートメントを使用します。

4.1 DROP VIEW の構文

DROP VIEW ビュー名;

以下の SQL は、「Brazil Customers」ビューを削除します。

-- ビューを削除
DROP VIEW [Brazil Customers];