【SQL基礎】Viewの更新
前回、Viewの作成方法について紹介しました。
Viewを定義することで、複雑なSQL文を毎回入力する必要が無くなるので開発効率を向上させることができます。
本記事では、作成したViewの変更・更新方法について説明していきます。
Viewの変更
作成したViewの定義を変更する場合には「ALTER VIEW文」または「CREATE OR REPLACE VIEW文」を使用します。
ALTER VIEW文でViewを変更する際は以下書式で記述します。
ALTER VIEW ビュー名 AS 定義;
前回の記事で作成した以下teachers_viewを使ってALTER VIEW文でageカラムを追加してみます。
ALTER VIEW teachers_view AS SELECT teacher_id,name,class_id,age FROM teachers;
書式はCREATE VIEW文と同じです。作成してあるView名を指定して新しいViewの定義に変更することができます。では、ageカラムが追加できたか確認してみましょう。
ageカラムが追加できているのが確認できました。
次にCREATE OR REPLACE VIEW文の書式は以下の通りです。
CREATE OR REPLACE VIEW ビュー名 AS 定義;
CREATE VIEW文の場合は新しいViewを作成するだけですが、OR REPLACEを付けると指定したViewが存在しない場合は新しくViewを作成、指定したViewが存在する場合はそのViewの定義を変更します。
では、先ほどALTER VIEW文でageカラムを追加したteachers_viewを変更してみます。
Viewとして表示するものをname,address,ageカラムの3つに変更します。
CREATE OR REPLACE VIEW teachers_view AS SELECT name,address,age FROM teachers;
teachers_viewを確認すると、name,address,ageカラムの3つに変更されているのが確認できます。
Viewとして指定したteachers_viewが存在しているので、元のteachers_viewが変更されました。
Viewの更新
ALTER VIEW文は作成したViewの定義を変更するものでしたが、作成したViewのデータを更新する場合はUPDATE文を使用します。UPDATE文の記述方法は通常の実テーブルと同じです。
上図のteachers_viewに対してタロウという名前をシュウタに更新してみます。
更新前のテーブル
UPDATE teachers_view SET name = 'シュウタ' WHERE teacher_id = 1;
更新後のテーブル
名前を更新することができました。
このようにViewの更新は実テーブルに対して行うのと同じようにUPDATE文でできます。ただしViewは仮想的なテーブルなので、実テーブルのように自由に更新できるわけではありません。Viewに対するデータの更新には以下のような制限があります。
1つの実テーブルから定義されているViewに対してのみデータの更新が可能です。
複数の実テーブルから定義されているViewはデータの更新ができません。
今回の学習ポイント
・作成したViewの定義を変更するにはALTER VIEW文を使用する。
・ALTER OR REPLACE VIEW文だと指定したViewが存在する場合はそのViewを変更し、存在しない場合は新たにViewを作成する。
・Viewの更新は実テーブルに対して行うのと同じようにUPDATE文で行える。(ただし、複数の実テーブルから定義されているViewはデータの更新ができない。)
練習問題
問題として使用するデータは「SQL練習問題」のものを使用しています。
以下からダウンロード可能です。
以下のようにしてworldcup2014データベースを作成し、インポートしてください。
※worldcup2014.zip解凍してできるworldcup2014.sqlファイルをCドライブ直下に配置した場合。
[sql] CREATE DATABASE worldcup2014;USE worldcup2014;
Source C/worldcup2014.sql
[/sql]
- 作成したViewを変更するためには以下のうちどの文を使用すればよいでしょうか?
・UPDATE VIEW文
・ADD VIEW文
・ALTER VIEW文
・SELECT VIEW文
Viewの更新方法について説明しました。
次回はViewの削除方法についてです。