PostgreSQL show tables: как вывести список таблиц в psql и SQL
-
В PostgreSQL часто нужно быстро посмотреть список таблиц в базе данных. Это помогает ориентироваться в структуре, проверять наличие нужных таблиц или анализировать проект. Команды для показа таблиц просты, но их несколько - от консольных до SQL-запросов.
Зачем это нужно? Вы экономите время на навигацию, избегаете ошибок в скриптах и лучше понимаете базу. Подходят новичкам и опытным разработчикам. Разберём основные способы шаг за шагом.
Быстрый способ через psql: команда \dt
Команда
\dtв psql - самый простой метод вывести таблицы. Она работает прямо в терминале клиента PostgreSQL, без лишних SQL-запросов. Подключаетесь к базе командой\c имя_базы, потом вводите\dt- и получаете список.Это удобно для повседневной работы: показывает схему, имя таблицы, тип и владельца. Например, в тестовой базе dvdrental команда выведет таблицы вроде actor, address, category. Не путайте с MySQL - там SHOW TABLES, а в PostgreSQL свой синтаксис. Если таблиц нет, увидите “No relations found”.
Вот вариации команды:
\dt- базовый список таблиц в public схеме.\dt+- с дополнительной инфой: размер, описание.\dt *.- таблицы во всех схемах.\dt myschema.*- только в указанной схеме.
Команда Что показывает Пример вывода \dt Имя, схема, тип public | actor | table | postgres \dt+ + размер, описание Добавляет колонки size и description \dt *. Все схемы Включая custom схемы Выберите \dt для скорости - это стандарт для админов и разработчиков.
SQL-запросы к information_schema
Если нужен programmatic доступ или фильтры, используйте SELECT из information_schema.tables. Это стандартный SQL-способ, работает в любом клиенте: pgAdmin, DBeaver или скриптах. Запрос возвращает table_name, исключая системные схемы.
Пример: подключаетесь к базе, выполняете запрос. В dvdrental увидите actor, film, customer без pg_catalog. Фильтр NOT IN (‘pg_catalog’, ‘information_schema’) обязателен - иначе список замусорен системными таблицами. Добавьте WHERE table_type = ‘BASE TABLE’ для таблиц без представлений.
Полезные варианты:
- Базовый список:
SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'; - С типом:
... AND table_type = 'BASE TABLE'; - С схемой:
SELECT table_schema, table_name FROM ...;
Параметр Описание Пример table_schema = ‘public’ Только public actor, address table_type = ‘BASE TABLE’ Только таблицы Исключает views NOT IN (‘pg_catalog’…) Без системных Чистый список Этот метод гибкий - легко интегрировать в скрипты или приложения.
Запросы к pg_catalog.pg_tables
Системный каталог pg_catalog даёт детальную инфу о таблицах. Запрос к pg_tables показывает schemaname, tablename, фильтруя по схеме. Это внутренний механизм PostgreSQL, быстрее information_schema для больших баз.
Например:
SELECT tablename FROM pg_catalog.pg_tables WHERE schemaname = 'public';. ДобавьтеAND schemaname != 'information_schema'для чистоты. В выводе - реальные имена вроде my_first_table. pg_catalog - для продвинутых случаев, когда нужен доступ к метаданным.Ключевые опции:
- Все таблицы:
SELECT * FROM pg_catalog.pg_tables; - По схеме:
WHERE schemaname = 'public'; - С владельцем:
SELECT schemaname, tablename, tableowner FROM pg_catalog.pg_tables;
Свойство Что даёт Когда использовать schemaname Имя схемы Фильтр по public/custom tablename Имя таблицы Основной список tableowner Владелец Проверки прав доступа Подходит для автоматизации и глубокого анализа.
Сравнение методов и дополнительные команды
Выбор зависит от задачи: \dt для консоли, SQL для скриптов. psql-команды быстрее, но не экспортируемы. SQL-запросы универсальны, поддерживают JOIN и ORDER BY. В pgAdmin используйте панель браузера - визуальный список без команд.
Метод Скорость Гибкость Подходит для \dt Высокая Низкая Консоль, быстрый просмотр information_schema Средняя Высокая Скрипты, GUI pg_catalog Высокая Высокая Продвинутый анализ Не забывайте права доступа - без них таблицы не увидите. Для деталей таблицы:
\d имя_таблицы.Полезные нюансы работы с таблицами
Команды покрывают 90% случаев, но есть тонкости. В мульти-схемных базах уточняйте схему, иначе увидите только public. Для views:
information_schema.tables WHERE table_type = 'VIEW'. Экспорт списка:\dt > tables.txt.Осталось разобраться с правами, индексами и производительностью на больших БД. Эти приёмы упростят администрирование PostgreSQL в проектах любого масштаба.
© 2024 - 2026 ExLends, Inc. Все права защищены.