Истории успеха наших клиентов — лучшие проекты
Вход/ Регистрация

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

34497
5 минут чтения
Средний рейтинг статьи: 3.7

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

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

Postgre SQL

DROP DATABASE

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

    

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

Практика

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

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

    

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

    

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

    

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

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

    

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

    

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

IF EXIST

Опция IF EXISTS позволяет выполнить проверку, существует ли база данных, прежде чем её удалять. Полный синтаксис выглядит следующим образом:

    

Если база данных существует, команда удаляет её. Если БД с таким именем нет, появляется информативное уведомление, а не сообщение об ошибке.

Чтобы проверить, как работает опция IF EXISTS, сначала создайте пример базы данных:

    

Затем удалите только что созданную базу данных, используя опцию IF EXISTS:

    

Если база данных с таким именем существует, результат будет таким же, как при использовании DROP DATABASE.

БД с именем timeweb_db больше недоступна. Повторите команду удаления с опцией IF EXISTS:

    

В результате в терминале отобразится информативное сообщение о том, что такой сущности нет.

Напоследок выполните DROP DATABASE без дополнительных опций:

    

Использование DROP DATABASE без параметра IF EXISTS приведёт к тому, что в терминале появится менее информативное сообщение об ошибке.

WITH (FORCE)

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

    

DBaaS

Запустите свою базу данных в облаке и
оптимизируйте процессы DevOps и CI/CD.

Утилита dropdb

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

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

    

Флаг

Тип

Что делает

-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 закрывает оба запроса.

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

    

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

Подготовили для вас выгодные тарифы на DBaaS

Cloud DB 1/1/8

447 ₽/мес

Процессор
1 x 3.3 ГГц
Память
1 ГБ
Диск NVMe
8 ГБ
Приватный IP
Есть
Резервные копии
Есть
Cloud DB 1/2/20

711 ₽/мес

Процессор
1 x 3.3 ГГц
Память
2 ГБ
Диск NVMe
20 ГБ
Приватный IP
Есть
Резервные копии
Есть
Таблица тарифов
Сравнение тарифов
Cloud DB 1/1/8
496
Cloud DB 1/2/20
790
Cloud DB 2/2/30
1160
Cloud DB 2/4/40
1580
Cloud DB 4/8/80
3160
Cloud DB 4/12/120
4240
Cloud DB 6/12/180
5460
Cloud DB 8/16/220
7040
Процессор1 x 3.3 ГГц1 x 3.3 ГГц2 x 3.3 ГГц2 x 3.3 ГГц4 x 3.3 ГГц4 x 3.3 ГГц6 x 3.3 ГГц8 x 3.3 ГГц
Память1 ГБ2 ГБ2 ГБ4 ГБ8 ГБ12 ГБ12 ГБ16 ГБ
Диск NVMe8 ГБ20 ГБ30 ГБ40 ГБ80 ГБ120 ГБ180 ГБ220 ГБ
Приватный IPЕстьЕстьЕстьЕстьЕстьЕстьЕстьЕсть
Резервные копииЕстьЕстьЕстьЕстьЕстьЕстьЕстьЕсть

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

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

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

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

34497
5 минут чтения
Средний рейтинг статьи: 3.7

Читайте также

Хотите внести свой вклад?
Участвуйте в нашей контент-программе за
вознаграждение или запросите нужную вам инструкцию
img-server