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;