HOWTO · PostgreSQL

PostgreSQL のビューの概要

この記事では、PostgreSQL でビューを作成、編集、表示、および削除する方法を紹介します。

このページの内容

それらは有益ですが、ユーザーは PostgreSQL でのビューの扱いに問題を抱えることがあります。 ただし、これで問題が発生することはなくなります。 最初に、PostgreSQL でビューを作成、削除、および更新するために知っておく必要があるすべてについて説明します。

PostgreSQL のビュー

ビューは、データベース内の他のテーブルと同じように見えます。 ただし、違いは、既存のデータベースの内容を抽出して、そのデータのみをユーザーに表示できることです。

その結果、機密情報や無関係な情報は元のデータベースに残り、公開されなくなります。

ビューを作成する

ビューの作成は難しいように思えるかもしれませんが、PostgreSQL を使用すると非常に簡単に作成できます。 そのためには、任意のクエリを使用して適用できる条件を伴う CREATE VIEW ステートメントを使用する必要があります。

次のスキーマを検討してください。

CREATE TABLE users(
    user_id int PRIMARY KEY,
    user_name VARCHAR (100) UNIQUE,
    email VARCHAR (300) NOT NULL
);

INSERT INTO users(user_id, user_name, email)
VALUES (1, 'name', 'email');

user_id と user_name のみが表示されるテーブルをユーザーに表示したいとします。 これを実現するには、以下のコードを使用できます。

CREATE VIEW view_name AS
SELECT user_id, user_name
FROM users;

users テーブルから user_id と user_name のみを表示するビューを作成します。 view_name を使用してデータを取得するには、次のように SELECT コマンドを使用する必要があります。

select * from view_name;

出力:

 user_id | user_name 
---------+-----------
       1 | name

必要に応じて、条件を追加することもできます。 たとえば、特定のユーザーを表示するビューのみが必要な場合は、次のようにします。

CREATE VIEW view_name AS
SELECT user_id, user_name
FROM users
WHERE user_id= 123;

このビューは、user_id が 123 のユーザーのみで構成されます。

注: PostgreSQL に対応するテーブルがないと、ビューを作成できません。 ビューの前に常にテーブルを作成します。

ビューを表示する

ビューの表示は、ビューの作成とほぼ同じくらい簡単です。 テーブルを表示する場合、次の構文をよく使用します。

SELECT * FROM users;

同様に、ビューを表示したいときも同様の構文を使用します。

SELECT * FROM view_name;

注: 作成中は、テーブル名と同様に、各ビュー名が一意であることを確認してください。

ビューのコードを表示する

大規模なデータベースや長いコード行では、ビューのコードが失われ、アクセスできなくなることがあります。 ただし、PostgreSQL には、複数行をスクロールせずにコードをすばやく表示するのに役立つコマンドがあります。

これを行うには、いくつかの方法があります。

  • SELECT 句 - ほとんどのユーザーは SELECT 句に慣れているため、これはより簡単な方法の 1つです。 使用方法は次のとおりです。

    SELECT definition FROM pg_views
    WHERE viewname = 'view_name';
    

    一部のバージョンもこれを受け入れます。

    SELECT view_definition FROM information_schema.views
    WHERE table_name = 'view_name';
    

    このコマンドは、ビューの作成に使用された元のコードを書き換えたバージョンを提供することに注意してください。

  • pg_get_viewdef - このコマンドは正常に機能しますが、多くのユーザーは実装が難しいと感じています。 これがあなたのシナリオでもある場合は、次のように使用してみてください。

    SELECT pg_get_viewdef('view_name', true);
    

    もう 1つの方法は、名前を regclass にキャストすることです。 これを使用できるいくつかの方法を次に示します。

    SELECT pg_get_viewdef('view_name'::regclass);
    
  • \d+ viewname - 上記のコマンドのいくつかは、うまく機能しますが、覚えるのが少し難しい場合があります。 迅速で効果的な方法が必要な場合は、代わりにこのコマンドを試してください。

    このような関数をさらに調べたい場合は、\? と入力してみてください。 コマンドラインで。 次に、PostgreSQL のその他の機能を調べるために使用できる一連のコマンドが表示されます。

ビューを更新する

ビューの名前がわかっている場合は、作成に使用された元のコードにアクセスできなくても、ビューを常に更新できます。

UPDATE 句を使用して実現できます。 ただし、最初に、前に説明したように、既存のテーブルを使用してビューを作成します。 ビューの名前を覚えておいてください。そうしないと、アクセスできなくなります。 ビューを更新するには、次のことを試してください。

CREATE OR REPLACE VIEW view_name AS 
SELECT * FROM name_of_the_table;

このコードの最後の行を、好みのビューを生成するのに役立つ任意のクエリに置き換えることができます。 ビューの名前を変更したい場合は、次のコードを使用して変更できます。

ALTER VIEW view_name
RENAME TO new_name;

既存のビューを削除し、必要な変更を加えて再度作成することで、ビューを更新することもできます。 削除プロセスは以下で説明されています。

ビューを削除する

ビューを削除する理由は複数あります。 たとえば、更新が多すぎてやり直した方がよい場合や、不要になった場合などです。

原因が何であれ、PostgreSQL はビューの削除を信じられないほど簡単にしました。 次のコードを使用してこれを行うことができます。

DROP VIEW IF EXISTS view_name;

ここで、IF EXISTS 句は必須ではありませんが、推奨されます。 ビュー名が存在しない場合でも、コードを実行できます。

ただし、長いコードでビュー名をリストしているときにエラーが発生すると、削除が妨げられ、データベースでエラーが発生する可能性があるため、問題になる可能性があります。 したがって、用途はタスクの性質によって異なります。

作成、更新、削除、表示、および作成コードへのアクセスに関して、PostgreSQL でビューを使用するために知っておく必要があるのはこれだけです。 その機能を深く理解し、簡単に使用できるようになったことを願っています。