PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL ОПИСАНИЕ ТАБЛИЦА Еквивалент

Някои СУБД като Oracle, MySQL и MariaDB имат DESCRIBE команда, която връща информация за таблици и изгледи. Отива DESCRIBE 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 в таблицата, дефиницията на изгледа, ако връзката е изглед, и настройка за идентичност на репликата, която не е по подразбиране, и името на метода за достъп, ако релацията има метод за достъп.

Пример:

\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

Връщане само на конкретни типове обекти

Както споменахме, if \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 в други СУБД.

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 изгледите са почти стандартни за повечето от основните СУБД и така можем да потърсим този изглед и в тези СУБД.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Споделяне на вашите данни с PostgreSQL 11

  2. Laravel:Грешка [PDOException]:Не можа да се намери драйвер в PostgreSQL

  3. Как да изберете повече от 1 запис на ден?

  4. MIN() Функция в PostgreSQL

  5. SQLAlchemy поддръжка на Postgres схеми