SQL Server のビューを変更・削除する
SQL Server のビューを変更・削除する
全回 「 SQL Server のビューを作成する 」 では、スクリプトでユーザー定義ビューを作成し、ビューからデータを取得しました。
今回は、全回作ったユーザー定義のビュー viewTestResult を変更して確認し、最後に削除してみましょう。
こちら のスクリプトを実行して、テーブルを再生成しておいてください。 全てのテーブルは使いませんが、これらのテーブルが存在している前提で進めます。
ユーザー定義ビューの変更
ユーザー定義ビューを作成するには ALTER VIEW を使います。 シンプルなユーザー定義のビューを変更する構文は次の通りです。
※ SQL Server 2008 より前のバージョンでは使えませんので、その場合はビューを一旦削除して再作成してください。
ALTER VIEW [ ビュー名 ] AS [ SELECT ステートメント ]
CREATE が ALTER になっただけで、CREATE の定義と同じです。
それでは、ユーザー定義のビュー viewTestResult を変更してみましょう。
スクリプトを別でソース管理しているのでなければ、既存のビューを変更する時は、データベースに保存されているものを元に変更することも多いかと思います。
生成したユーザー定義のビューは、SQL Server Management Studio のビューの箇所で見つけることができます。
変更したいユーザー定義のビューを選んで、右クリックで以下のようにすると、 ALTER VIEW のステートメントをクエリー画面に出力することができます。
viewTestResult のカラムに、学生の誕生日 (Student テーブルの Birthday カラム)も追加してみましょう。
ALTER VIEW [dbo].[viewTestResult] AS SELECT TR.TestResultID, T.TestID, T.TestNameEn, T.TestNameJp, S.StudentID, S.FirstName, S.LastName, S.Birthday, TR.Score FROM TestResult AS TR LEFT JOIN Test AS T ON TR.TestID = T.TestID LEFT JOIN Student AS S ON TR.StudentID = S.StudentID;
上記のスクリプトを実行すると、ユーザー定義ビューの viewTestResult が変更されます。
それでは、viewTestResult が変更されたか確認してみましょう。
例えば、viewTestResult ビューから、誕生日が 1979 年以前の学生のデータを取得するクエリーは以下の通りです。
SELECT * FROM viewTestResult WHERE YEAR(Birthday) <= 1979;
[ 実行結果 ]
Birthday も取得できていますね。
ユーザー定義ビューの削除
ストアドプロシージャを削除するには DROP VIEW を使います。
DROP VIEW [ ビュー名 ];
それでは、次のスクリプトを実行して、 viewTestResult を削除してみましょう。
DROP VIEW viewTestResult;
viewTestResult が削除されました。