ビューを変更する(ALTER VIEW文, CREATE OR REPLACE VIEW文)

MySQL では作成済みのビューに関する変更を行うときに ALTER VIEW 文または CREATE OR REPLACE VIEW文 を使用します。ここでは MySQL でビューを変更する方法について解説します。

(Last modified: )

ALTER VIEW文を使ったビューの変更

ALTER VIEW 文を使ってビューを変更する方法です。書式は次の通りです。

ALTER VIEW view_name [(column_list)] AS select_statement

CREATE VIEW 文と書式は同じです。既存のビューの名前を指定してビューを再設定します。

では実際に試してみます。テーブルを作成しビューを作成したあとでビューを変更してみます。まず元となるテーブルを次のように作成しました。テーブル作成したあとにデータをいくつか追加しておきます。

create table product (id int, name varchar(10), stock int);

insert into product values(1, 'Display', 11);
insert into product values(2, 'Mouse', 2);
insert into product values(3, 'Keyboard', 8);
insert into product values(4, 'Printer', 4);

ALTER VIEW文を使ったビューの変更(1)

product テーブルの id カラムと name カラムからビューを作成します。次のように実行してください。

create view productlist as select id, name from product;

ALTER VIEW文を使ったビューの変更(2)

ビューが作成されました。

作成したビューからデータを取得します。次のように実行してください。

select * from productlist;

ALTER VIEW文を使ったビューの変更(3)

それでは作成した productlist ビューを変更してみます。変更前との違いは stock カラムの値を追加で取得していることと、 WHERE 句を使って stock カラムの値が 5 よりも大きい値に限定していることです。

alter view productlist as select id, name, stock from product where stock > 5;

ALTER VIEW文を使ったビューの変更(4)

ビューの変更が完了しました。 それでは変更後のビューからデータを取得してみます。

ALTER VIEW文を使ったビューの変更(5)

変更されたビューに基づいてデータを取得することができました。

CREATE OR REPLACE VIEW文を使ったビューの変更

ビューを変更するもう一つの方法は CREATE VIEW 文に OR REPLACE をつけて実行する方法です。書式は次のとおりです。

CREATE OR REPLACE VIEW view_name AS select_statement

CREATE VIEW 文を使用した場合は新規のビューを作成しますが、 OR REPLACE が付いている場合、指定したビュー名のビューが存在しない場合は新規にビューを作成し、指定したビュー名のビューが存在している場合はビューの変更を行います。

では実際に試してみます。テーブルを作成しビューを作成したあとでビューを変更してみます。まず元となるテーブルを次のように作成しました。テーブル作成したあとにデータをいくつか追加しておきます。

create table user (id int, name varchar(10), address varchar(10), old int);

insert into user values(1, 'Yamada', 'Tokyo', 32);
insert into user values(2, 'Suzuki', 'Osaka', 19);
insert into user values(3, 'Endou', 'Tokyo', 22);
insert into user values(4, 'Gotou', 'Nagoya', 28);

CREATE OR REPLACE VIEW文を使ったビューの変更(1)

user テーブルの name カラム、 old カラムからビューを作成します。 WHERE 句を使って address カラムの値で条件を設定しています。次のように実行してください。

create or replace view followuser as select name, old from user where address='Tokyo';

CREATE OR REPLACE VIEW文を使ったビューの変更(2)

今回ビュー名として指定した followuser というビューは存在していなかったので、新しくビューが作成されました。

作成したビューからデータを取得します。次のように実行してください。

select * from followuser;

CREATE OR REPLACE VIEW文を使ったビューの変更(3)

それでは作成した followuser ビューを変更してみます。取得するカラムを name カラムと addresss カラムに変更し、 WHERE 句の条件も old カラムの値で条件を設定しています。

create or replace view followuser as select name, address from user where old>25;

CREATE OR REPLACE VIEW文を使ったビューの変更(4)

今回ビュー名として指定した followuser というビューは既に存在しているので、既存の followuser ビューが変更されました。それでは変更後のビューからデータを取得してみます。

CREATE OR REPLACE VIEW文を使ったビューの変更(5)

変更されたビューに基づいてデータを取得することができました。

-- --

ALTER VIEW 文および CREATE OR REPLACE VIEW文を使って作成済みのビューを変更する方法について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。