/
Вопросы и ответы
/
SQL
/

Как посмотреть схемы postgresql

Как посмотреть схемы postgresql

3 года назад

Nikolai Gagarinov

Ответы

1

Для просмотра схем можно использовать следующие запросы:

  1. Чтобы просмотреть все схемы в текущей базе данных, выполните запрос:

    1
    2
    SELECT schema_name 
    FROM information_schema.schemata;
  2. Чтобы просмотреть все таблицы в конкретной схеме, выполните запрос, заменив имя_схемы на нужное значение:

    1
    2
    3
    SELECT table_name 
    FROM information_schema.tables 
    WHERE table_schema = 'имя_схемы';
  3. Чтобы просмотреть информацию о столбцах в таблице в конкретной схеме, выполните запрос, заменив имя_схемы и имя_таблицы на нужные значения:

    1
    2
    3
    SELECT column_name, data_type 
    FROM information_schema.columns 
    WHERE table_schema = 'имя_схемы' AND table_name = 'имя_таблицы';
  4. Для просмотра всех индексов в базе данных используйте следующий запрос:

    1
    2
    SELECT indexname, tablename 
    FROM pg_indexes;

3 года назад

Ivan Gagarinov

0

Схема в PostgreSQL — папка внутри базы данных, в которой лежат таблицы, представления и функции. По умолчанию всё создаётся в схеме public.

В консоли psql

1
\dn

Покажет схемы и их владельцев. \dn+ добавит права доступа и описание.

Таблицы конкретной схемы:

1
\dt sales.*

SQL-запросом

1
2
3
SELECT schema_name
FROM information_schema.schemata
ORDER BY schema_name;

Запрос покажет и служебные схемы: pg_catalog, information_schema, pg_toast. Только пользовательские:

1
2
3
4
5
SELECT nspname
FROM pg_namespace
WHERE nspname NOT LIKE 'pg\_%'
  AND nspname <> 'information_schema'
ORDER BY nspname;

Сколько таблиц в каждой схеме

1
2
3
4
5
6
SELECT table_schema, count(*) AS tables
FROM information_schema.tables
WHERE table_type = 'BASE TABLE'
  AND table_schema NOT IN ('pg_catalog', 'information_schema')
GROUP BY table_schema
ORDER BY table_schema;

Текущая схема и путь поиска

1
2
SHOW search_path;   -- "$user", public
SELECT current_schema();

search_path — список схем, где PostgreSQL ищет таблицу, если в запросе не указана схема. Поэтому SELECT * FROM orders находит public.orders, а таблицу из схемы sales нужно писать полностью: sales.orders.

Добавить схему в путь поиска для текущей сессии:

1
SET search_path TO sales, public;

Создать и удалить схему

1
2
3
CREATE SCHEMA sales;
DROP SCHEMA sales;          -- только пустую
DROP SCHEMA sales CASCADE;  -- вместе со всеми таблицами

CASCADE удаляет все объекты схемы без подтверждения. На рабочей базе сначала сделайте резервную копию.

В графическом клиенте

В pgAdmin и DBeaver схемы видны в дереве: База данных → Schemas.

Работу с PostgreSQL разбирают в курсе «SQL для разработчиков».

7 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845