Базы данных
Обзор
База данных — это контейнер самого верхнего уровня для организации хранения объектов SQL (объектов базы данных). Полная иерархия следующая: кластер → база данных → схема → таблица и другие объекты (функции, представления, операторы).
Кластер ADPG содержит несколько баз данных. В рамках одного соединения можно подключиться только к одной базе данных. Однако вы можете установить несколько подключений к одной или разным базам данных.
Базы данных физически разделены. По умолчанию ADPG размещает файлы базы данных по следующему пути: /pg_data1/adpg16. ADPG создает каталог adpg16 по пути, указанному в параметре 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 может быть единственным вариантом подключения, если нужно удалить последнюю пользовательскую базу данных кластера.