ビューの作成

広告

ビューを作成します。CREATE VIEW文を使います。基本書式は次の通りです。

CREATE VIEW db_name.view_name AS select_statement;

指定のデータベース内に指定した名前のビューを作成します。ビュー名は64バイト以内で指定し、Windowsの場合は大文字と小文字は区別されません。 またビュー名とテーブル名は同じ扱いとなるため、既に存在するテーブル名をビュー名には付けることができません。(逆も同じです)。

USE文を使ってデータベースに接続している状態で、そのデータベース内にビューを作成する場合は次のように単にビュー名だけを指定して作成することもできます。

CREATE VIEW view_name AS select_statement;

ビューは元となるテーブルから必要な情報を取得して名前を付けたものと考えることができます。元となるテーブルからどのようにビューを作成するのかをselect_statementで指定して下さい。

サンプル

実際に試してみます。まず元となるテーブルとして次のようなテーブルを作成します。

mysql> create table products(id int, name varchar(20), category varchar(20));

p1-1

データをいくつか追加しておきます。

p1-2

ではビューを作成します。まずは「products」テーブルの中の「category」カラムの値が'Drink'のものだけを取得するビューを作成します。

mysql> create view drink_products
    -> as select id, name from products where category = 'Drink';

p1-3

作成したビューはあたかもテーブルのように扱うことができます。それではビューのデータを取得してみます。

mysql> select * from drink_products;

p1-4

「drink_products」ビューに含まれるデータを取得できました。

*** ***

もう一つ試してみます。「products」テーブルの中の「category」カラムの値を重複せずに取得するビューを作成します。

mysql> create view categorylist
    -> as select distinct category from products;

p1-5

作成したビューのデータを取得してみます。

mysql> select * from categorylist;

p1-6

ビューのカラム名を指定

作成されるビューのカラム名は元となるテーブルのカラム名がそのまま使われますが別途名前を指定することもできます。次の書式を使います。

CREATE VIEW db_name.view_name(column_list) AS select_statement;

元データから取得するカラム数と同じだけのカラム名をcolumn_listの箇所にカンマで区切って記述します。

例えば次のように記述します。

create view user(userid, username) as select id, name from personal;

上記の場合、元のテーブルから取得した「id」カラムと「name」カラムを、それzれ「userid」カラムと「username」カラムとしてビューを作成します。

では実際に試してみます。

元になるテーブルとして次のテーブルを使います。

p1-7

ではビューを作成します。「products」テーブルの中の「category」カラムの値が'Fruit'のものだけを取得するビューを作成します。

mysql> create view fruit_products(id, fruitname)
    -> as select id, name from products where category = 'Fruit';

p1-8

今回元のテーブルの「name」カラムを「fruitname」カラムとしてビューを作成しています。ではビューのデータを取得してみます。

p1-9

作成したビューのカラム名が「id」カラムと「fruitname」カラムとして作成されていることが確認できました。

( Written by Tatsuo Ikura )