Postgresql-views

提供:Dev Guides
移動先:案内検索

PostgreSQL-ビュー

ビューは擬似テーブルです。 つまり、実際のテーブルではありません。それにもかかわらず、SELECTには通常のテーブルとして表示されます。 ビューは、通常のテーブルから特定の列または特定の行を選択して、実際のテーブルのサブセットを表すことができます。 ビューは結合されたテーブルを表すこともできます。 ビューには個別のアクセス許可が割り当てられているため、それらを使用してテーブルアクセスを制限し、ユーザーがテーブルの特定の行または列のみを表示できるようにすることができます。

ビューには、テーブルのすべての行、または1つ以上のテーブルから選択した行を含めることができます。 ビューは、1つまたは複数のテーブルから作成できます。これは、作成されたPostgreSQLクエリに依存してビューを作成します。

仮想テーブルの一種であるビューを使用すると、ユーザーは次のことができます-

  • ユーザーまたはユーザーのクラスが自然または直感的に見えるようにデータを構造化します。
  • ユーザーが完全なテーブルではなく、限られたデータしか見ることができないように、データへのアクセスを制限します。
  • レポートの生成に使用できるさまざまなテーブルのデータを要約します。

ビューは通常のテーブルではないため、ビューでDELETE、INSERT、またはUPDATEステートメントを実行できない場合があります。 ただし、ビューでDELETE、INSERT、またはUPDATEを使用するこの問題を修正するルールを作成できます。

ビューを作成する

PostgreSQLビューは、 CREATE VIEW ステートメントを使用して作成されます。 PostgreSQLビューは、単一のテーブル、複数のテーブル、または別のビューから作成できます。

基本的なCREATE VIEW構文は次のとおりです-

CREATE [TEMP | TEMPORARY] VIEW view_name AS
SELECT column1, column2.....
FROM table_name
WHERE [condition];

通常のPostgreSQL SELECTクエリで使用するのと非常に似た方法で、SELECTステートメントに複数のテーブルを含めることができます。 オプションのTEMPまたはTEMPORARYキーワードが存在する場合、ビューは一時スペースに作成されます。 一時ビューは、現在のセッションの終了時に自動的に削除されます。

考慮してください、link:/postgresql/company.sql [COMPANY]テーブルには以下のレコードがあります-

 id | name  | age | address    | salary
----+-------+-----+------------+--------
  1 | Paul  |  32 | California |  20000
  2 | Allen |  25 | Texas      |  15000
  3 | Teddy |  23 | Norway     |  20000
  4 | Mark  |  25 | Rich-Mond  |  65000
  5 | David |  27 | Texas      |  85000
  6 | Kim   |  22 | South-Hall |  45000
  7 | James |  24 | Houston    |  10000

次に、COMPANYテーブルからビューを作成する例を示します。 このビューは、COMPANYテーブルの列を数個だけ持つために使用されます-

testdb=# CREATE VIEW COMPANY_VIEW AS
SELECT ID, NAME, AGE
FROM  COMPANY;

これで、実際のテーブルをクエリするのと同様の方法でCOMPANY_VIEWをクエリできます。 以下は例です-

testdb=# SELECT * FROM COMPANY_VIEW;

これは、次の結果を生成します-

 id | name  | age
----+-------+-----
  1 | Paul  |  32
  2 | Allen |  25
  3 | Teddy |  23
  4 | Mark  |  25
  5 | David |  27
  6 | Kim   |  22
  7 | James |  24
(7 rows)

ビューの削除

ビューを削除するには、 view_name を指定してDROP VIEWステートメントを使用します。 基本的なDROP VIEW構文は次のとおりです-

testdb=# DROP VIEW view_name;

次のコマンドは、前のセクションで作成したCOMPANY_VIEWビューを削除します-

testdb=# DROP VIEW COMPANY_VIEW;