sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL BESCHRIJVING TABEL Equivalent

Sommige DBMS'en zoals Oracle, MySQL en MariaDB hebben een DESCRIBE commando dat informatie over tabellen en views retourneert. Het gaat DESCRIBE table waarbij tabel de naam is van de tabel of weergave, en deze kan ook worden gevolgd door een kolomnaam als u alleen informatie over een specifieke kolom wilt.

PostgreSQL heeft geen DESCRIBE TABLE commando als zodanig, maar er zijn alternatieven.

De \d Commando

Als u psql . gebruikt , een snelle manier om tabelinformatie terug te geven is met de \d opdracht. Deze opdracht toont informatie over tabellen, weergaven, gerealiseerde weergaven, index, reeksen of vreemde tabellen. We kunnen dit commando daarom gebruiken als een DESCRIBE TABLE alternatief.

Syntaxis

De syntaxis gaat als volgt:

\d[S+] [ pattern ]

Hier, pattern kan de naam zijn van de tabel (of een ander object) of het kan een reguliere expressie zijn. Als \d wordt gebruikt zonder een pattern argument, het is gelijk aan \dtvmsE die een lijst toont van alle zichtbare tabellen, weergaven, gematerialiseerde weergaven, reeksen en vreemde tabellen.

Standaard worden alleen door de gebruiker gemaakte objecten getoond, maar u kunt een patroon of de S . opgeven modifier om systeemobjecten op te nemen.

Voorbeeld

Hier is een voorbeeld van het gebruik van \d om informatie terug te geven over een tabel met de naam actor :

\d public.actor

Resultaat:

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

De opdracht retourneert ook bijbehorende indexen, beperkingen, regels en triggers. Ook wordt voor buitenlandse tafels de bijbehorende buitenlandse server getoond.

Uitgebreide info

We kunnen een plusteken toevoegen (+ ) om uitgebreide informatie te onthullen, inclusief eventuele opmerkingen die zijn gekoppeld aan de kolommen van de tabel, de aanwezigheid van OID's in de tabel, de weergavedefinitie als de relatie een weergave is, en een niet-standaard replica-identiteitsinstelling en de naam van de toegangsmethode als de relatie heeft een toegangsmethode.

Voorbeeld:

\d+ public.actor

Resultaat:

                                                                 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

Alleen specifieke objecttypen retourneren

Zoals vermeld, if \d wordt gebruikt zonder een pattern argument, het is gelijk aan \dtvmsE die een lijst toont van alle zichtbare tabellen, weergaven, gematerialiseerde weergaven, reeksen en vreemde tabellen.

We kunnen elk van de letters E . toevoegen , i , m , s , t , en v , die respectievelijk staan ​​voor vreemde tabel, index, gematerialiseerde weergave, volgorde, tabel en weergave. We kunnen een of al deze letters specificeren, in willekeurige volgorde, om een ​​lijst van objecten van dit type te krijgen.

Hier is een voorbeeld van het toevoegen van t om de geretourneerde gegevens te beperken tot alleen tabellen:

\dt actor

Resultaat:

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

Wildcards

Hier is een voorbeeld van het opnemen van een wildcard-operator, zodat alle tabellen die beginnen met film worden geretourneerd:

\dt film*

Resultaat:

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

De information_schema.columns Bekijk

Als u psql . niet gebruikt (en zelfs als je bent met behulp van psql ), dan kunt u altijd de information_schema.columns . opvragen weergave. Deze weergave kan worden gebruikt om soortgelijke informatie terug te geven als wat we zouden krijgen met DESCRIBE table in andere DBMS'en.

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

Resultaat:

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

Deze weergave bevat veel meer kolommen en u kunt desgewenst kolommen toevoegen/verwijderen.

Het information_schema weergaven zijn vrijwel standaard voor de meeste grote DBMS'en, en dus kunnen we deze weergave ook in die DBMS'en opvragen.


  1. PostgreSQL versus Linux-kernelversies

  2. MySQL - hoeveel rijen kan ik invoegen in één enkele INSERT-instructie?

  3. SQL-BEPERKINGEN

  4. Startnummer automatisch verhogen wijzigen?