MySQL 速習チュートリアル

MySQL ビュー (Views)

1. MySQL CREATE VIEW 文の概要

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

ビューは、実際のテーブルと同様にカラム(列)と行で構成されます。ビュー内の各フィールドは、データベース内の1つまたは複数の実際のテーブルから取得されたフィールドです。

ビューを作成することで、複雑なSQLステートメントや関数を一つの仮想テーブルとしてまとめ、あたかも単一のテーブルからデータを取得しているかのように提示することができます。

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

2. CREATE VIEW の基本構文

構文

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

       注意: ビューは常にリアルタイムなデータを表示します!データベースエンジンはビューの定義(SELECTステートメント)のみを保存し、データそのもののコピーを保持することはありません。

3. CREATE VIEW の実行例

以下の SQL は、ブラジルの顧客のみを表示する "brazil_customers_view" という名前のビューを作成する例です。

実行例

/* ブラジルの顧客を抽出するビューの作成 */
CREATE VIEW brazil_customers_view AS
SELECT CustomerName, ContactName
FROM Customers
WHERE Country = 'Brazil';

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

ビューへのクエリ実行例

SELECT * FROM brazil_customers_view;

次の 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);

このビューに対してクエリを実行する場合は、以下のようになります。

ビューへのクエリ実行例

SELECT * FROM products_above_average_price;

4. CREATE OR REPLACE VIEW 文(ビューの更新)

MySQL では、CREATE OR REPLACE VIEW ステートメントを使用して既存のビューを更新することができます。

構文

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

以下の SQL は、先ほどの "brazil_customers_view" に "City"(都市)カラムを追加して更新する例です。

実行例

/* 既存のビューに City カラムを追加して定義を上書き */
CREATE OR REPLACE VIEW brazil_customers_view AS
SELECT CustomerName, ContactName, City
FROM Customers
WHERE Country = 'Brazil';

5. DROP VIEW 文(ビューの削除)

不要になったビューは、DROP VIEW ステートメントを使用して削除します。

構文

DROP VIEW ビュー名;

以下の SQL は、"brazil_customers_view" を削除する例です。

実行例

/* 作成したビューを削除 */
DROP VIEW brazil_customers_view;