ビューを変更する(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);
product テーブルの id カラムと name カラムからビューを作成します。次のように実行してください。
create view productlist as select id, name from product;
ビューが作成されました。
作成したビューからデータを取得します。次のように実行してください。
select * from productlist;
それでは作成した productlist ビューを変更してみます。変更前との違いは stock カラムの値を追加で取得していることと、 WHERE 句を使って stock カラムの値が 5 よりも大きい値に限定していることです。
alter view productlist as select id, name, stock from product where stock > 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);
user テーブルの name カラム、 old カラムからビューを作成します。 WHERE 句を使って address カラムの値で条件を設定しています。次のように実行してください。
create or replace view followuser as select name, old from user where address='Tokyo';
今回ビュー名として指定した followuser というビューは存在していなかったので、新しくビューが作成されました。
作成したビューからデータを取得します。次のように実行してください。
select * from followuser;
それでは作成した followuser ビューを変更してみます。取得するカラムを name カラムと addresss カラムに変更し、 WHERE 句の条件も old カラムの値で条件を設定しています。
create or replace view followuser as select name, address from user where old>25;
今回ビュー名として指定した followuser というビューは既に存在しているので、既存の followuser ビューが変更されました。それでは変更後のビューからデータを取得してみます。
変更されたビューに基づいてデータを取得することができました。
-- --
ALTER VIEW 文および CREATE OR REPLACE VIEW文を使って作成済みのビューを変更する方法について解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。