Базы данных
Обзор
База данных — это контейнер самого верхнего уровня для организации хранения объектов SQL (объектов базы данных). Полная иерархия следующая: кластер → база данных → схема → таблица и другие объекты (функции, представления, операторы).
Кластер ADPG содержит несколько баз данных. В рамках одного соединения можно подключиться только к одной базе данных. Однако вы можете установить несколько подключений к одной или разным базам данных.
Базы данных физически разделены. По умолчанию ADPG размещает файлы базы данных по следующему пути: /pg_data1/adpg14. ADPG создает каталог adpg14 по пути, указанному в параметре Data directory
(смотрите Конфигурационные параметры). Значение по умолчанию для этого параметра — /pg_data1
.
После установки кластер ADPG содержит три базы данных, описанные в таблице ниже.
Название | Описание |
---|---|
postgres |
База данных для начального подключения. Она создаётся копированием |
template0 |
Шаблон базы данных. |
template1 |
Шаблон базы данных. Этот шаблон содержит те же данные, что и |
Просмотр существующих баз данных
Можно использовать метакоманду psql \l
или опцию командной строки -l
, чтобы просмотреть существующие базы данных:
$ psql
\l
$ psql -l
Результат:
Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres
Также можно выбрать данные из каталога pg_database:
SELECT oid, datname, datistemplate, datallowconn FROM pg_database;
Результат:
oid | datname | datistemplate | datallowconn -------+-----------+---------------+-------------- 14486 | postgres | f | t 1 | template1 | t | t 14485 | template0 | t | f
В столбце datallowconn
вы можете увидеть, что подключения к template0
не разрешены.
Следующая команда выводит базу данных, к которой вы подключились:
SELECT current_database();
Чтобы определить размер базы данных, используйте функции pg_size_pretty
и pg_database_size
:
SELECT pg_size_pretty(pg_database_size('postgres'));
Создание базы данных
Чтобы создать свою первую базу данных, подключитесь к базе данных postgres
. Утилита psql по умолчанию подключается к postgres
. Также необходимо иметь соответствующие привилегии для этой операции или быть суперпользователем.
Выполните команду CREATE DATABASE, чтобы создать базу данных. Следующая команда создает базу данных book_store
:
CREATE DATABASE book_store;
Текущая роль автоматически становится владельцем новой базы данных. Также можно указать другого владельца. Код ниже делает role1
владельцем созданной базы данных book_store
:
CREATE DATABASE book_store OWNER role1;
Вы также можете указать шаблон для новой базы данных. Следующий код создает базу данных book_store
, копируя template0
:
CREATE DATABASE book_store TEMPLATE template0;
Удаление базы данных
Только владелец базы данных или суперпользователь может удалить базу данных. Это действие удаляет все объекты, содержащиеся в базе данных. Удаление базы данных является необратимой операцией.
Используйте команду DROP DATABASE, чтобы удалить базу данных:
DROP DATABASE book_store;
Команду DROP DATABASE
невозможно выполнить, пока есть хотя бы одно подключение к указанной базе данных. Однако можно подключиться к любой другой базе, включая template1
. База данных template1
может быть единственным вариантом подключения, если нужно удалить последнюю пользовательскую базу данных кластера.