PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Odpowiednik TABELI OPISÓW PostgreSQL

Niektóre DBMS, takie jak Oracle, MySQL i MariaDB, mają DESCRIBE polecenie, które zwraca informacje o tabelach i widokach. To idzie DESCRIBE table gdzie tabela jest nazwą tabeli lub widoku, po której może również następować nazwa kolumny, jeśli chcesz uzyskać informacje tylko o określonej kolumnie.

PostgreSQL nie ma DESCRIBE TABLE polecenie jako takie, ale istnieją alternatywy.

\d Polecenie

Jeśli używasz psql , szybkim sposobem na zwrócenie informacji o tabeli jest \d Komenda. To polecenie wyświetla informacje o tabelach, widokach, widokach zmaterializowanych, indeksie, sekwencjach lub tabelach obcych. Dlatego możemy użyć tego polecenia jako DESCRIBE TABLE alternatywa.

Składnia

Składnia wygląda tak:

\d[S+] [ pattern ]

Tutaj, pattern może być nazwą tabeli (lub innego obiektu) lub może być wyrażeniem regularnym. Jeśli \d jest używany bez pattern argument, jest to odpowiednik \dtvmsE który pokaże listę wszystkich widocznych tabel, widoków, widoków zmaterializowanych, sekwencji i tabel obcych.

Domyślnie wyświetlane są tylko obiekty utworzone przez użytkownika, ale możesz podać wzorzec lub S modyfikator, aby uwzględnić obiekty systemowe.

Przykład

Oto przykład użycia \d aby zwrócić informacje o tabeli o nazwie actor :

\d public.actor

Wynik:

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

Polecenie zwraca również powiązane indeksy, ograniczenia, reguły i wyzwalacze. Również w przypadku tabel obcych wyświetlany jest powiązany serwer zagraniczny.

Informacje rozszerzone

Możemy dodać znak plus (+ ) w celu ujawnienia rozszerzonych informacji, które obejmują wszelkie komentarze związane z kolumnami tabeli, obecność identyfikatorów OID w tabeli, definicję widoku, jeśli relacja jest widokiem, oraz niestandardowe ustawienie tożsamości repliki i nazwę metody dostępu, jeśli relacja ma metodę dostępu.

Przykład:

\d+ public.actor

Wynik:

                                                                 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

Zwróć tylko określone typy obiektów

Jak wspomniano, if \d jest używany bez pattern argument, jest to odpowiednik \dtvmsE który pokaże listę wszystkich widocznych tabel, widoków, widoków zmaterializowanych, sekwencji i tabel obcych.

Możemy dołączyć dowolną z liter E , i , m , s , t i v , które oznaczają odpowiednio tabelę obcą, indeks, widok zmaterializowany, sekwencję, tabelę i widok. Możemy określić dowolną lub wszystkie z tych liter w dowolnej kolejności, aby uzyskać listę obiektów tego typu.

Oto przykład dodawania t aby ograniczyć zwracane dane tylko do tabel:

\dt actor

Wynik:

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

Dzikie karty

Oto przykład włączenia operatora z symbolem wieloznacznym, dzięki któremu wszystkie tabele zaczynające się od film są zwracane:

\dt film*

Wynik:

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

Kolumny information_schema.columns Zobacz

Jeśli nie używasz psql (a nawet jeśli jesteś) przy użyciu psql ), wtedy zawsze możesz wysłać zapytanie do information_schema.columns pogląd. Ten widok może służyć do zwracania informacji podobnych do tych, które otrzymalibyśmy za pomocą DESCRIBE table w innych 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';

Wynik:

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

Ten widok zawiera znacznie więcej kolumn i możesz dodawać/usuwać kolumny zgodnie z wymaganiami.

information_schema widoki są dość standardowe w większości głównych DBMS, więc możemy odpytywać ten widok również w tych DBMS.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Implementacja konfiguracji wielu centrów danych dla PostgreSQL — część druga

  2. Wygeneruj losową liczbę z zakresu 1 - 10

  3. Oblicz następny klucz podstawowy - o określonym formacie

  4. Najlepszy sposób na liczenie rekordów w dowolnych odstępach czasu w Rails+Postgres

  5. Połącz wiele wierszy w tablicy za pomocą SQL na PostgreSQL