sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL BESKRIV TABEL Tilsvarende

Nogle DBMS'er såsom Oracle, MySQL og MariaDB har en DESCRIBE kommando, der returnerer information om tabeller og visninger. Det går til DESCRIBE table hvor tabel er navnet på tabellen eller visningen, og den kan også efterfølges af et kolonnenavn, hvis du kun ønsker information om en bestemt kolonne.

PostgreSQL har ikke en DESCRIBE TABLE kommandoen som sådan, men der er alternativer.

\d Kommando

Hvis du bruger psql , en hurtig måde at returnere tabeloplysninger på er med \d kommando. Denne kommando viser information om tabeller, visninger, materialiserede visninger, indeks, sekvenser eller fremmede tabeller. Vi kan derfor bruge denne kommando som en DESCRIBE TABLE alternativ.

Syntaks

Syntaksen ser sådan ud:

\d[S+] [ pattern ]

Her, pattern kunne være navnet på tabellen (eller et andet objekt), eller det kunne være et regulært udtryk. Hvis \d bruges uden et pattern argument, svarer det til \dtvmsE som vil vise en liste over alle synlige tabeller, visninger, materialiserede visninger, sekvenser og fremmede tabeller.

Som standard vises kun brugeroprettede objekter, men du kan angive et mønster eller S modifikator til at inkludere systemobjekter.

Eksempel

Her er et eksempel på brug af \d for at returnere information om en tabel kaldet actor :

\d public.actor

Resultat:

                                             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()

Kommandoen returnerer også tilknyttede indekser, begrænsninger, regler og udløsere. Også for udenlandske tabeller vises den tilknyttede udenlandske server.

Udvidet info

Vi kan tilføje et plustegn (+ ) for at afsløre udvidet information, som inkluderer eventuelle kommentarer, der er knyttet til tabellens kolonner, tilstedeværelsen af ​​OID'er i tabellen, visningsdefinitionen, hvis relationen er en visning, og en ikke-standard replika identitetsindstilling og adgangsmetodenavnet, hvis relationen har en adgangsmetode.

Eksempel:

\d+ public.actor

Resultat:

                                                                 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

Returnering kun specifikke objekttyper

Som nævnt, if \d bruges uden et pattern argument, svarer det til \dtvmsE som vil vise en liste over alle synlige tabeller, visninger, materialiserede visninger, sekvenser og fremmede tabeller.

Vi kan tilføje et hvilket som helst af bogstaverne E , i , m , s , t og v , som står for henholdsvis fremmed tabel, indeks, materialiseret visning, sekvens, tabel og visning. Vi kan angive et hvilket som helst af eller alle disse bogstaver, i en hvilken som helst rækkefølge, for at få en liste over objekter af disse typer.

Her er et eksempel på tilføjelse af t for at begrænse de returnerede data til kun tabeller:

\dt actor

Resultat:

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

Jokertegn

Her er et eksempel på at inkludere en jokertegnoperator, så alle tabeller, der starter med film returneres:

\dt film*

Resultat:

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

information_schema.columns Vis

Hvis du ikke bruger psql (og selvom du er ved hjælp af psql ), så kan du altid forespørge på information_schema.columns udsigt. Denne visning kan bruges til at returnere lignende oplysninger, som vi ville få med DESCRIBE table i andre DBMS'er.

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';

Resultat:

+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+
| 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()                                   |
+-------------+-----------------------------+------------+--------------+-------------+-----------------------------------------+

Denne visning indeholder mange flere kolonner, og du kan tilføje/fjerne kolonner efter behov.

information_schema visninger er stort set standard på tværs af de fleste af de store DBMS'er, og så vi kan også forespørge på denne visning i disse DBMS'er.


  1. Få Short Day Name i PostgreSQL

  2. Sådan indlæses JDBC-konfiguration fra Egenskabsfil Eksempel

  3. Er der nogen funktion i oracle, der ligner group_concat i mysql?

  4. Indstil værdi i afhængighed af Helm-diagrammet