Unlocked VPN для iPhone. 7 дней бесплатно, далее 99 ₽/месЗагрузить в AppStore

Как удалить базу данных PostgreSQL

Blog

В предыдущей статье мы рассмотрели установку PostgreSQL на Debian. Сегодня разберемся с удалением баз данных PostgreSQL.

Удалить базу данных PostgreSQL можно двумя способами — командой DROP DATABASE или с помощью утилиты dropdb. Между этими методами нет большой разницы. Отличается только синтаксис, плюс использование утилиты dropdb даёт чуть больше возможностей для управления удалением.

Postgre SQL

DROP DATABASE

Первый способ удалить БД PostgreSQL — использовать следующую инструкцию SQL:

DROP DATABASE <Имя базы данных>;

Команда удаляет каталог, который содержит информацию о БД и сохранённые ранее записи. DROP DATABASE может выполнить только владелец базы данных. Если кто-то в момент исполнения команды будет использовать БД, то удаление не будет завершено.

Практика

Чтобы убедиться на практике, что DROP DATABASE работает, создадим БД на сервере Timeweb Cloud, а затем удалим её.

Подключитесь к Postgres через терминал:

sudo -i -u postgres psql

Создайте новую БД для практики:

CREATE DATABASE example_db;

Чтобы убедиться, что новая БД успешно создана, выведите список всех баз данных:

\l

В ответ отобразится таблица, в которой перечислены все БД, доступные на сервере.

Теперь посмотрим, как в PostgreSQL выполнить удаление базы данных. Выполните запрос:

DROP DATABASE example_db;

В терминале отобразится сообщение, о том, что БД удалена. Чтобы убедиться в этом, ещё раз выведите полный список БД:

\l

В таблице не должно быть базы с именем example_db.

IF EXIST

Опция 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)

Опция WITH (FORCE) доступна в Postgres версии 13 и выше. Она нужна для «силового» удаления базы данных, которая используется в данный момент. WITH (FORCE) принудительно закрывает сеанс и удаляет БД.

DROP DATABASE <database name> WITH (FORCE);

Утилита dropdb

Утилита командной строки dropdb — это просто оболочка для DROP DATABASE. По сути, эти два метода идентичны. Однако dropdb предлагает дополнительные возможности, которые помогают сделать удаление базы PostgreSQL более удобным и информативным.

Основной синтаксис:

dropdb <параметры соединения> <опции> <имя БД>

Флаг

Тип

Что делает

-e

--echo

Опции

Выводит в терминал все команды, которые фактически выполняются на сервере при использовании утилиты dropdb

-f

--force

Опции

Разрывает все текущие подключения, прежде чем удалять БД

-i

--interactive

Опции

Выводит просьбу подтвердить удаление БД, прежде чем стирать её

-V

--version

Опции

Выводит в консоль версию утилиты

--if-exists

Опции

Добавляет информативности, выдавая вместо ошибки текстовое сообщение, если целевая БД не существует

-?

--help

Опции

Вызывает меню со справочной информацией

-h <host>

--host=<host>

Параметры соединения

Задаёт имя хоста, на которой работает БД

-p <port>

--port=<port>

Параметры соединения

Указывает номер порта, который прослушивает сервер

-U <username>

--username  <username>

Параметры соединения

Позволяет подключиться к БД под именем указанного пользователя

-w

--no-password

Параметры соединения

Делает запрос пароля необязательным. Это особенно полезно при выполнении пакетных заданий и сценариев

-W

--password

Параметры соединения

Принудительно запрашивает пароль при выполнении каждой операции

--maintenance-db=<database name>

Параметры соединения

Уточняет имя подключения к БД

Например, у вас есть облачные базы данных. Периодически нужно удалять неиспользуемые сущности. Вы хотите, чтобы этот процесс был безопасным и понятным всем пользователям. Утилита dropdb закрывает оба запроса.

Допустим, команда вида:

dropdb -i -e example_db

приведёт к тому, что в терминале сначала появится просьба подтвердить удаление, а после подтверждения отобразятся команды, выполненные в ходе операции.

Коротко о главном

Чтобы удалить базу данных, вы должны быть её владельцем и иметь доступ к терминалу с привилегиями sudo.

Выбор способа удаления зависит от вас. Между DROP DATABASE и утилитой dropdb нет принципиальной разницы. Это лишь вопрос удобства использования и тех сценариев, при которых вам нужно в PostgresSQL удалить базу данных.

Кстати, в официальном канале Timeweb Cloud собрали комьюнити из специалистов, которые говорят про IT-тренды, делятся полезными инструкциями и даже приглашают к себе работать. 

Telegram
VK
Скопировать ссылку

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону