PostgreSQL - 删除数据库
PostgreSQL - 删除数据库
Section titled “PostgreSQL - 删除数据库”本章介绍如何在 PostgreSQL 中删除数据库。你有两种主要方法来完成此任务:
- 使用
DROP DATABASESQL 命令。 - 使用
dropdb命令行工具。
警告:DROP DATABASE 命令是不可逆的。它会永久删除数据库,包括所有表、数据和相关对象。在执行此操作之前,务必备份你的数据。
方法 1:使用 DROP DATABASE SQL 命令
Section titled “方法 1:使用 DROP DATABASE SQL 命令”DROP DATABASE 命令会完全移除一个数据库。它会删除服务器上的物理数据文件,并移除数据库的目录条目。
- 权限:你必须是数据库所有者或超级用户才能执行此命令。
- 无活动连接:当任何人(包括你自己)连接到数据库时,你不能删除它。你必须连接到另一个数据库(例如,默认的
postgres数据库)才能发出此命令。
DROP DATABASE [IF EXISTS] database_name [WITH (FORCE)];| 参数 | 描述 |
|---|---|
database_name | 要删除的数据库名称。 |
IF EXISTS | (可选,但建议在脚本中使用)如果数据库不存在,则防止抛出错误。届时会发出一个通知。 |
WITH (FORCE) | (可选,PostgreSQL 13+ 版本可用)在删除目标数据库之前,强制终止所有到该数据库的活动连接。这可能很有用,但应谨慎使用。 |
要删除名为 testdb 的数据库,你首先需要连接到另一个数据库,然后运行以下命令:
-- 步骤 1:使用 psql 连接到 'postgres' 数据库-- psql -U 你的用户 -d postgres
-- 步骤 2:执行 DROP DATABASE 命令DROP DATABASE testdb;
-- 为避免脚本中的错误,请使用 IF EXISTS:DROP DATABASE IF EXISTS testdb;方法 2:使用 dropdb 命令行工具
Section titled “方法 2:使用 dropdb 命令行工具”dropdb 是 DROP DATABASE 命令的命令行封装。它通常更方便,因为它为你处理连接细节,连接到默认的维护数据库来执行删除操作。
dropdb [connection-options] [options] dbname| 选项 | 描述 |
|---|---|
dbname | 要删除的数据库名称。 |
-h host | 指定服务器的主机名。 |
-p port | 指定服务器的端口。 |
-U username | 指定连接时使用的用户名。 |
-W | 强制要求输入密码。 |
-e | 回显 dropdb 生成并发送到服务器的命令。 |
--if-exists | 如果数据库不存在,则不报告错误。 |
要从操作系统的命令行删除 testdb 数据库:
# 此命令以 'postgres' 用户身份连接到本地服务器# 并在删除 'testdb' 之前提示输入密码。dropdb -h localhost -p 5432 -U postgres -W testdb如果你的环境变量(如 PGHOST、PGPORT 和 PGUSER)已设置,你可以简化命令:
dropdb testdb