ビューの作成と表示#
ビュー(view)は、データベーステーブルのデータクエリや操作を独立したデータベース操作として抽象化する特殊なテーブルです。実際にはデータベースに存在しません。
データベースにはビューの定義のみが格納され、ビューの実際のデータはデータベースクエリによって取得されます。したがって、データベースの内容が変更されると、ビューのデータに影響があります。
構文:
CREATE VIEW [ビュー名] AS [SELECT文]
Tips:
- ビューの名前は、データベース内の他のテーブル名やビューと重複しないようにする必要があります。また、ビューの名前は数字で始めることはできません。
- SELECT 文は SELECT ステートメントです。複数のテーブルのデータをクエリできます。このステートメントには以下の制限があります。
- ユーザーには CREATE VIEW 権限と SELECT 関連のテーブルとビューの権限が必要です。
- SELECT 文はシステム変数やユーザー変数を参照することはできません。
- SELECT 文は FROM 句のサブクエリを含むことはできません。
- SELECT 文はプリペアドステートメントのパラメータを参照することはできません。
プリペアドステートメント:SQL ステートメントのテンプレートを作成し、データベースに送信します。予約された値はパラメータ "?" でマークされます。例:
INSERT INTO MyGuests (firstname, lastname, email) VALUES(?, ?, ?)
- ビューを作成するために参照するテーブルやビューが存在する必要がありますが、作成後は存在しなくてもかまいません(ただし、データには問題が発生するでしょう)。
CHECK TABLE
を使用してテーブルの存在を確認できます。 - ビューの定義には ORDER BY 句を使用できます。ただし、ビューで ORDER BY 句を使用すると、ビューのデータも ORDER BY 句で並べ替えられます。
- ビューの定義では一時テーブルを参照することはできず、一時テーブルビューを作成することはできません。
WITH CHECK OPTION
キーワードを使用すると、ビューがデータの妥当性をチェックできます。
例#
単一のテーブルから作成する場合
CREATE VIEW MyView AS
SELECT * FROM MyTable
複数のテーブルから作成する場合
CREATE VIEW MyView AS
SELECT * FROM MyTable1, MyTable2
複数のテーブルから作成し、列を指定する場合
CREATE VIEW MyView AS
SELECT MyTable1.id, MyTable1.name, MyTable2.age
FROM MyTable1, MyTable2
複数のテーブルから作成し、列を指定し、列の順序を指定する場合
CREATE VIEW MyView AS
SELECT MyTable1.id, MyTable1.name, MyTable2.age
FROM MyTable1, MyTable2
ORDER BY MyTable1.id, MyTable2.age
ビュー内の列名と対応関係を指定する場合
CREATE VIEW MyView
(id,name,number) AS
SELECT MyTable1.id, MyTable1.name, MyTable2.age
FROM MyTable1, MyTable2
ビューのクエリ#
ビューはクエリに使用できますが、データの更新には使用しないことをお勧めします