21.1. Обзор
База данных — именованная коллекция объектов SQL («объектов базы данных»). В целом, каждый объект базы данных (таблицы, функции и т. д.) принадлежит одной и только одной базе данных. (Правда есть несколько системных каталогов, например, pg_database
, которые принадлежат всему кластеру и доступны для каждой базы данных этого кластера.) Если точнее, база данных это набор схем, которые включают в себя таблицы, функции и т. д. Таким образом, полная иерархия включает в себя: сервер, базу данных, схему, таблицу (или иные типы объектов, к примеру, функции).
При подключении к серверу базы данных, клиент должен указать в параметрах подключения имя базы данных, с которой нужно соединиться. Одно соединение не может иметь доступ более чем к одной базе данных. Однако приложение не ограничено в количестве соединений к одной и той же или разным базам данных. Базы данных разделены физически и контроль доступа осуществляется на уровне соединения. В случае, когда один экземпляр сервера Postgres Pro обслуживает проекты или пользователей, которых необходимо изолировать друг от друга, рекомендуется размещать их в раздельных базах данных. В случае, когда проекты или пользователи взаимосвязаны и должны иметь возможность использовать общие ресурсы, они должны размещаться в одной базе данных, но, возможно, в раздельных схемах. Схемы — в чистом виде логическая структура, и кто к чему может получить доступ управляется системой привилегий. Более подробная информация по управлению схемами приведена в Разделе 5.8.
Базы данных создаются командой CREATE DATABASE
(см. Раздел 21.2), а удаляются командой DROP DATABASE
(см. Раздел 21.5). Список существующих баз данных можно посмотреть в системном каталоге pg_database
, например,
SELECT datname FROM pg_database;
Метакоманда \l
или ключ -l
командной строки приложения psql также позволяют вывести список существующих баз данных.
Примечание
Стандарт SQL называет базы данных «каталогами», но на практике у них нет отличий.