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
の任意の文字を追加できます 、i
、m
、s
、t
、および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でもこのビューを照会できます。