在本章节中,我们将会讲解如何在postgres中删除数据库,这里有两种方法来删除数据库
- 使用drop database,一个sql命令
- 使用dropdb,一个命令行可执行文件
执行该操作前一定要小心,因为删除当前的一个数据库将会导致丢失存储在数据库中的完整信息。
使用drop database
该命令删除数据库。它删除数据库的目录条目,并删除包含数据的目录,它只能有数据库的所有者执行,当你或者其他任何人连接到目标数据库时(连接到postgres或任何其他数据库以发出此命令),无法执行该命令。
语法
下面给出了drop database的语法:
DROP DATABASE [ IF EXISTS ] name
参数
下表列出了相关参数及其描述:
序号 | 参数 | 描述 |
1 | IF EXISTS | 如果数据库不存在时,不显示报错。而不是错误信息 |
2 | name | 要删除的数据库的名字 |
我们无法删除一个有开放连接的数据库,包括我们自己从psql或者pgAdmin建立的连接。如果我们想要删除当前连接的数据库,我们必须切换到另一个数据库或者template1。因此,使用命令行程序dropdb可能更方便,该命令是drop database命令的包装。
举例
以下是一个简单的例子,该示例将从postgres中删除testdb数据库
postgres=# drop database testdb ;
DROP DATABASE
postgres=#
使用dropdb命令
Postgres命令行可执行文件dropdb是sql命令drop database的命令行包装。通过这种方法删除数据库和通过其它方法访问服务删除数据库之间没有什么实际的区别。dropdb毁坏一个已经存在的postgres数据库。执行此命令的用户必须是数据库的超级用户或者是数据库的所有者。
语法
dropdb的语法如下所示:
dropdb [option...] dbname
参数
下表列出了参数及其说明:
序号 | 参数 | 说明 |
1 | dataname | 要删除的数据库的名称 |
2 | option | dropdb使用的命令参数 |
选项
下表列出了dropdb使用的命令行参数-
序号 | 选项 | 说明 |
1 | -e | 显示正在发送到服务器的命令 |
2 | -i | 在执行任何破坏性操作前发出验证提示 |
3 | -V | 打印dropdb版本并退出 |
4 | --if-exists | 如果数据库不存在时,不显示报错,而不是错误信息 |
5 | --help | 显示有关dropdb命令的参数并退出 |
6 | -h host | 指定服务器的主机名 |
7 | -p port | 指定服务器监听的端口,或者 socket 文件 |
8 | -U username | 连接数据库的用户名 |
9 | -w | 忽略输入密码 |
10 | -W | 连接时强制要求输入密码 |
11 | --maintenance-db=dbname | 指定要删除目标数据库要连接的数据库的名称。 |
举例
以下示例演示了如何从OS命令提示符下删除数据库:
postgres@test01:[~]: dropdb -h 10.175.2.186 -p 5432 -U postgres testdb
上面的命令删除数据库testdb。在这里,我使用了postgres(位于template1的pg_roles下)用户名来删除数据库。