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でもこのビューを照会できます。