|
CREATE VIEW ステートメントを使用して、ストアド ビューまたは仮想テーブルを作成します。
CREATE VIEW ビュー名 [(列名[, 列名]...)] [WITH EXECUTE AS 'MASTER'] AS クエリ スペック [ORDER BY order-by式[, order-by式]...] ビュー名 ::= ユーザー定義名 列名 ::= ユーザー定義名 order-by 式 ::= 式 [CASE(文字列) | COLLATE コレーション名] [ASC | DESC](SELECT 構文を参照)
ビューは一種のデータベース オブジェクトで、クエリを格納し、テーブルのように振る舞います。ビューには行と列のセットが含まれます。ビューを介してアクセスされるデータは 1 つ以上のテーブルに格納されており、テーブルは SELECT ステートメントにより参照されます。ビューが返すデータは、そのビューが参照される都度、動的に作成されます。
ビュー名の最大長については、『Advanced Operations Guide』の表 1 「識別子の種類別の制限」を参照してください。ビュー内の列の最大数は 256 です。ビュー定義には 64 KB の制限があります。
Pervasive PSQL はグループ化ビューをサポートしています。グループ化ビューとは、SELECT リストに次の項目を含んでいるビューのことです。
サブクエリが式であれば、サブクエリ内でグループ化ビューを使用できます。演算子 IN、EXISTS、ALL、または ANY と関連付けられているサブクエリは式と見なされません。
ビュー定義にプロシージャを含めることはできません。
ORDER BY 句は、SELECT ステートメントで説明される ORDER BY 句と機能的には同じです。SELECT を参照してください。以下に挙げるいくつかの要点に注意してください。
信頼されるビューには WITH EXECUTE AS 'MASTER' 句を含めます。信頼されるオブジェクトと信頼されないオブジェクトを参照してください。
次のステートメントによって、大学に在籍している全員の電話番号リストを作成する、vw_Person という名前の信頼されないビューが作成されます。このビューには姓、名および電話番号が表示され、列ごとにヘッダーが付きます。Person テーブルは DEMODATA サンプル データベースの一部です。
このビューに対する以降のクエリでは、SELECT ステートメントで列見出しを使用できます。
ビューを実行するユーザーは、Person テーブルの SELECT 権限を持っている必要があります。
次の例では類似したビューが作成されますが、これは信頼されるビューです。
CREATE VIEW vw_trusted_Person (lastn,firstn,phone) WITH EXECUTE AS 'MASTER' AS SELECT Last_Name, First_Name,Phone FROM Person
ユーザー "user1" には vw_Person の SELECT 権限が付与されているものとします。user1 は次のように SELECT ステートメントで列見出しを使用できます。
user1 は Person テーブルの SELECT 権限を持っている必要はありません。権限は信頼されるビューに付与されています。
次のステートメントによって、大学に在籍している全員の電話番号リストを作成する、vw_Person という名前のビューが作成されます。このビューには姓、名および電話番号が表示され、列ごとにヘッダーが付きます。Person テーブルは DEMODATA サンプル データベースの一部です。
このビューに対する以降のクエリでは、次の例に示すように、SELECT ステートメントで列見出しを使用できます。
前の例に ORDER BY 句を含めるように変更できます。
CREATE VIEW vw_Person_ordby (lastn, firstn, telphone) AS SELECT Last_Name, First_ Name, Phone FROM Person ORDER BY phone
ビューは次のような結果を返します(簡潔にするため、すべてのレコードは表示されていません)。
Last_Name First_Name Phone ========= ========== ========== Vqyles Rex 2105551871 Qulizada Ahmad 2105552233 Ragadio Ernest 2105554654 Luckey Anthony 2105557628 Sokell Chester 2105559149 Gyduska Michael 5125550001 Happy Anthony 5125550004 Nix Anna 5125550006
次の例では、生徒の成績評価点平均(GPA)を降順で返し、さらに、その GPA ごとに生徒を姓の昇順で列挙するビューを作成します。
CREATE VIEW vw_gpa AS SELECT Last_Name,Left(First_Name,1) AS First_ Initial,Cumulative_GPA AS GPA FROM Person LEFT OUTER JOIN Student ON Person. ID=Student.ID ORDER BY Cumulative_GPA DESC, Last_Name
ビューは次のような結果を返します(簡潔にするため、すべてのレコードは表示されていません)。
Last_Name First_Initial GPA ========================= =============== ====== Abuali I 4.000 Adachi K 4.000 Badia S 4.000 Rowan A 4.000 Ujazdowski T 4.000 Wotanowski H 4.000 Gnat M 3.998 Titus A 3.998 Mugaas M 3.995 Pabalan R 3.995
次の例では、Person テーブルの先頭 10 レコードを ID 順で返すビューが作成されます。
ビューは次のような結果を返します(簡潔にするため、すべての列は表示されていません)。
ID First_Name Last_Name ========= ========== ========== 100062607 Janis Nipart 100285859 Lisa Tumbleson 100371731 Robert Mazza 100592056 Andrew Sugar 100647633 Robert Reagen 100822381 Roosevelt Bora 101042707 Avram Japadjief 101135758 Ismail Badad 101369010 Bruno Ippolite 101581226 Robert Obici 10 行が影響を受けました。
次の例では、ORDER BY を UNION と一緒に使用できることを示すためのビューを作成します。
CREATE VIEW vw_union_ordby_desc AS SELECT first_name FROM person UNION SELECT last_ name FROM PERSON ORDER BY first_name DESC
ビューは次のような結果を返します(簡潔にするため、すべてのレコードは表示されていません)。
First_Name =========== Zyrowski Zynda Zydanowicz Yzaguirre Yyounce Xystros Xyois Xu Wyont Wynalda Wykes
|