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 が削除されました。