sql >> データベース >  >> RDS >> PostgreSQL

PostgreSQLのDESCRIBETABLEと同等

    Oracle、MySQL、MariaDBなどの一部のDBMSには、DESCRIBEがあります。 テーブルとビューに関する情報を返すコマンド。 DESCRIBE table ここで、tableはテーブルまたはビューの名前であり、特定の列に関する情報のみが必要な場合は、その後に列名を続けることもできます。

    PostgreSQLにはDESCRIBE TABLEがありません コマンド自体ですが、代替手段があります。

    \d コマンド

    psqlを使用している場合 、テーブル情報を返す簡単な方法は、\dを使用することです。 指図。このコマンドは、テーブル、ビュー、マテリアライズドビュー、インデックス、シーケンス、または外部テーブルに関する情報を表示します。したがって、このコマンドをDESCRIBE TABLEとして使用できます。 代替案。

    構文

    構文は次のようになります:

    \d[S+] [ pattern ]

    ここでは、pattern テーブル(または他のオブジェクト)の名前にすることも、正規表現にすることもできます。 \dの場合 patternなしで使用されます 引数、\dtvmsEと同等です 表示されているすべてのテーブル、ビュー、マテリアライズドビュー、シーケンス、および外部テーブルのリストが表示されます。

    デフォルトでは、ユーザーが作成したオブジェクトのみが表示されますが、パターンまたはSを指定できます。 システムオブジェクトを含めるための修飾子。

    \dの使用例を次に示します。 actorというテーブルに関する情報を返す :

    \d public.actor

    結果:

                                                 Table "public.actor"
    +-------------+-----------------------------+-----------+----------+-----------------------------------------+
    |   Column    |            Type             | Collation | Nullable |                 Default                 |
    +-------------+-----------------------------+-----------+----------+-----------------------------------------+
    | actor_id    | integer                     |           | not null | nextval('actor_actor_id_seq'::regclass) |
    | first_name  | character varying(45)       |           | not null |                                         |
    | last_name   | character varying(45)       |           | not null |                                         |
    | last_update | timestamp without time zone |           | not null | now()                                   |
    +-------------+-----------------------------+-----------+----------+-----------------------------------------+
    Indexes:
        "actor_pkey" PRIMARY KEY, btree (actor_id)
        "idx_actor_last_name" btree (last_name)
    Referenced by:
        TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
    Triggers:
        last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated()

    このコマンドは、関連するインデックス、制約、ルール、およびトリガーも返します。また、外部テーブルの場合、関連する外部サーバーが表示されます。

    拡張情報

    プラス記号を追加できます(+ )拡張情報を表示します。これには、テーブルの列に関連付けられたコメント、テーブル内のOIDの存在、リレーションがビューの場合はビュー定義、デフォルト以外のレプリカID設定とアクセスメソッド名が含まれます。リレーションにはアクセス方法があります。

    例:

    \d+ public.actor

    結果:

                                                                     Table "public.actor"
    +-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
    |   Column    |            Type             | Collation | Nullable |                 Default                 | Storage  | Stats target | Description |
    +-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
    | actor_id    | integer                     |           | not null | nextval('actor_actor_id_seq'::regclass) | plain    |              |             |
    | first_name  | character varying(45)       |           | not null |                                         | extended |              |             |
    | last_name   | character varying(45)       |           | not null |                                         | extended |              |             |
    | last_update | timestamp without time zone |           | not null | now()                                   | plain    |              |             |
    +-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
    Indexes:
        "actor_pkey" PRIMARY KEY, btree (actor_id)
        "idx_actor_last_name" btree (last_name)
    Referenced by:
        TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
    Triggers:
        last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated()
    Access method: heap

    特定のオブジェクトタイプのみを返す

    前述のように、i f \d patternなしで使用されます 引数、\dtvmsEと同等です 表示されているすべてのテーブル、ビュー、マテリアライズドビュー、シーケンス、および外部テーブルのリストが表示されます。

    Eの任意の文字を追加できます 、imst 、およびv 、それぞれ、外部テーブル、インデックス、マテリアライズドビュー、シーケンス、テーブル、およびビューを表します。これらの文字のいずれかまたはすべてを任意の順序で指定して、これらのタイプのオブジェクトのリストを取得できます。

    tを追加する例を次に示します。 返されるデータをテーブルのみに制限するには:

    \dt actor

    結果:

              List of relations
    +--------+-------+-------+----------+
    | Schema | Name  | Type  |  Owner   |
    +--------+-------+-------+----------+
    | public | actor | table | postgres |
    +--------+-------+-------+----------+

    ワイルドカード

    これは、ワイルドカード演算子を含めて、filmで始まるすべてのテーブルを含める例です。 返されます:

    \dt film*

    結果:

                  List of relations
    +--------+---------------+-------+----------+
    | Schema |     Name      | Type  |  Owner   |
    +--------+---------------+-------+----------+
    | public | film          | table | postgres |
    | public | film_actor    | table | postgres |
    | public | film_category | table | postgres |
    +--------+---------------+-------+----------+
    >

    information_schema.columns 表示

    psqlを使用していない場合 (そしてあなたが psqlを使用する )、その後はいつでもinformation_schema.columnsにクエリを実行できます 見る。このビューを使用して、DESCRIBE table 他のDBMSで。

    SELECT
        column_name,
        data_type,
        character_maximum_length AS max_length,
        character_octet_length AS octet_length,
        is_nullable,
        column_default
    FROM
        information_schema.columns
    WHERE
        table_schema = 'public' AND 
        table_name = 'actor';

    結果:

    +-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
    | column_name |          data_type          | max_length | octet_length | is_nullable |             column_default              |
    +-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
    | actor_id    | integer                     |       NULL |         NULL | NO          | nextval('actor_actor_id_seq'::regclass) |
    | first_name  | character varying           |         45 |          180 | NO          | NULL                                    |
    | last_name   | character varying           |         45 |          180 | NO          | NULL                                    |
    | last_update | timestamp without time zone |       NULL |         NULL | NO          | now()                                   |
    +-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+

    このビューにはさらに多くの列が含まれており、必要に応じて列を追加/削除できます。

    information_schema ビューはほとんどの主要なDBMSでほぼ標準であるため、これらのDBMSでもこのビューを照会できます。


    1. PHPを使用してSQLサーバーに接続する方法

    2. Unityからデータベースに接続する方法

    3. ORA-03115を取得:anonymous pl/sqlからvarcharの配列をフェッチ中にサポートされていないネットワークデータ型または表現エラー

    4. Androidデバイス用の安全なデータベースを実装するためのベストプラクティス