📅  最后修改于: 2020-11-26 06:16:42             🧑  作者: Mango
在本章中,我们将讨论如何在PostgreSQL中删除数据库。删除数据库有两个选项-
使用此操作之前要小心,因为删除现有数据库将导致丢失存储在数据库中的完整信息。
此命令删除数据库。它删除数据库的目录条目,并删除包含数据的目录。它只能由数据库所有者执行。当您或其他任何人连接到目标数据库(连接到postgres或任何其他数据库以发出此命令)时,无法执行此命令。
下面给出了DROP DATABASE的语法-
DROP DATABASE [ IF EXISTS ] name
下表列出了参数及其说明。
S. No. | Parameter & Description |
---|---|
1 |
IF EXISTS Do not throw an error if the database does not exist. A notice is issued in this case. |
2 |
name The name of the database to remove. |
我们不能删除具有任何开放连接的数据库,包括我们从psql或pgAdmin III建立的连接。如果要删除当前连接的数据库,必须切换到另一个数据库或template1 。因此,改用程序dropdb可能更方便,该程序是此命令的包装。
以下是一个简单的示例,该示例将从PostgreSQL模式中删除testdb-
postgres=# DROP DATABASE testdb;
postgres-#
PostgresSQL命令行可执行文件dropdb是SQL命令DROP DATABASE的命令行包装。通过此实用程序和通过其他访问服务器的方法删除数据库之间没有有效的区别。 dropdb破坏现有的PostgreSQL数据库。执行此命令的用户必须是数据库超级用户或数据库的所有者。
dropdb的语法如下所示-
dropdb [option...] dbname
下表列出了参数及其说明
S. No. | Parameter & Description |
---|---|
1 |
dbname The name of a database to be deleted. |
2 |
option command-line arguments, which dropdb accepts. |
下表列出了dropdb接受的命令行参数-
S. No. | Option & Description |
---|---|
1 |
-e Shows the commands being sent to the server. |
2 |
-i Issues a verification prompt before doing anything destructive. |
3 |
-V Print the dropdb version and exit. |
4 |
–if-exists Do not throw an error if the database does not exist. A notice is issued in this case. |
5 |
–help Show help about dropdb command-line arguments, and exit. |
6 |
-h host Specifies the host name of the machine on which the server is running. |
7 |
-p port Specifies the TCP port or the local UNIX domain socket file extension on which the server is listening for connections. |
8 |
-U username User name to connect as. |
9 |
-w Never issue a password prompt. |
10 |
-W Force dropdb to prompt for a password before connecting to a database. |
11 |
–maintenance-db=dbname Specifies the name of the database to connect to in order to drop the target database. |
以下示例演示了如何从OS命令提示符下删除数据库-
dropdb -h localhost -p 5432 -U postgress testdb
Password for user postgress: ****
上面的命令删除数据库testdb 。在这里,我使用了postgres (位于template1的pg_roles下)用户名删除数据库。