Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.
Кратко о задаче
Первый способ**** удалить БД PostgreSQL — использовать следующую инструкцию SQL:
DROP DATABASE <Имя базы данных>;Команда удаляет каталог, который содержит информацию о БД и сохранённые ранее записи. DROP DATABASE может выполнить только владелец базы данных. Если кто-то в момент исполнения команды будет использовать БД, то удаление не будет завершено.
Чтобы убедиться на практике, что DROP DATABASE работает, создадим БД на сервере Simple-Server, а затем удалим её.
Подключитесь к Postgres через терминал:
Создайте новую БД для практики:
CREATE DATABASE example_db;Чтобы убедиться, что новая БД успешно создана, выведите список всех баз данных:
В ответ отобразится таблица, в которой перечислены все БД, доступные на сервере.
Теперь посмотрим, как в**** PostgreSQL выполнить удаление базы данных. Выполните запрос:
DROP DATABASE example_db;В терминале отобразится сообщение, о том, что БД удалена. Чтобы убедиться в этом, ещё раз выведите полный список БД:
В таблице не должно быть базы с именем example_db.
Опция IF EXISTS позволяет выполнить проверку, существует ли база данных, прежде чем её удалять. Полный синтаксис выглядит следующим образом:
DROP DATABASE IF EXISTS < Имя базы данных >;Если база данных существует, команда удаляет её. Если БД с таким именем нет, появляется информативное уведомление, а не сообщение об ошибке.
Чтобы проверить, как работает опция IF EXISTS, сначала создайте пример базы данных:
CREATE DATABASE timeweb_db;Затем удалите только что созданную базу данных, используя опцию IF EXISTS:
DROP DATABASE IF EXISTS timeweb_db;Если база данных с таким именем существует, результат будет таким же, как при использовании DROP DATABASE.
БД с именем timeweb_db больше недоступна. Повторите команду удаления с опцией IF EXISTS:
DROP DATABASE IF EXISTS timeweb_db;В результате в терминале отобразится информативное сообщение о том, что такой сущности нет.
Напоследок выполните DROP DATABASE без дополнительных опций:
DROP DATABASE timeweb_db;Использование DROP DATABASE без параметра IF EXISTS приведёт к тому, что в терминале появится менее информативное сообщение об ошибке.
Опция WITH (FORCE) доступна в Postgres версии 13 и выше. Она нужна для «силового» удаления базы данных, которая используется в данный момент. WITH (FORCE) принудительно закрывает сеанс и удаляет БД.
DROP DATABASE <database name> WITH (FORCE);Утилита командной строки dropdb — это просто оболочка для DROP DATABASE. По сути, эти два метода идентичны. Однако dropdb предлагает дополнительные возможности, которые помогают сделать удаление базы PostgreSQL более удобным и информативным.
dropdb <параметры соединения> <опции> <имя БД>| Флаг | Тип | Что делает |
|---|---|---|
| -e --echo | Опции | Выводит в терминал все команды, которые фактически выполняются на сервере при использовании утилиты dropdb |
| -f --force | Опции | Разрывает все текущие подключения, прежде чем удалять БД |
| -i --interactive | Опции | Выводит просьбу подтвердить удаление БД, прежде чем стирать её |
| -V --version | Опции | Выводит в консоль версию утилиты |
| --if-exists | Опции | Добавляет информативности, выдавая вместо ошибки текстовое сообщение, если целевая БД не существует |
| -? --help | Опции | Вызывает меню со справочной информацией |
| -h | Параметры соединения | Задаёт имя хоста, на которой работает БД |
| -p | Параметры соединения | Указывает номер порта, который прослушивает сервер |
| -U | Параметры соединения | Позволяет подключиться к БД под именем указанного пользователя |
| -w --no-password | Параметры соединения | Делает запрос пароля необязательным. Это особенно полезно при выполнении пакетных заданий и сценариев |
| -W --password | Параметры соединения | Принудительно запрашивает пароль при выполнении каждой операции |
| --maintenance-db= | Параметры соединения | Уточняет имя подключения к БД |
Выводит в терминал все команды, которые фактически выполняются на сервере при использовании утилиты dropdb
Разрывает все текущие подключения, прежде чем удалять БД
Выводит просьбу подтвердить удаление БД, прежде чем стирать её
Выводит в консоль версию утилиты
Добавляет информативности, выдавая вместо ошибки текстовое сообщение, если целевая БД не существует
Вызывает меню со справочной информацией
Задаёт имя хоста, на которой работает БД
Указывает номер порта, который прослушивает сервер
Позволяет подключиться к БД под именем указанного пользователя
Делает запрос пароля необязательным. Это особенно полезно при выполнении пакетных заданий и сценариев
Принудительно запрашивает пароль при выполнении каждой операции
--maintenance-db=
Уточняет имя подключения к БД
Например, у вас есть облачные базы данных. Периодически нужно удалять неиспользуемые сущности. Вы хотите, чтобы этот процесс был безопасным и понятным всем пользователям. Утилита dropdb закрывает оба запроса.
приведёт к тому, что в терминале сначала появится просьба подтвердить удаление, а после подтверждения отобразятся команды, выполненные в ходе операции.
Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.