DROP DATABASE
是一个 DDL 命令,用于删除(永久删除)数据库。
DROP DATABASE
存在于所有 PostgreSQL 版本中。
更改历史记录
- PostgreSQL 13
- 现在可以采用
FORCE
选项来删除数据库,即使其他用户已连接(提交 1379fd53)
- 现在可以采用
- PostgreSQL 8.2
IF EXISTS
子句已添加(提交 5b352d8e)
示例
DROP DATABASE
的基本执行示例
postgres=# DROP DATABASE foo; DROP DATABASE
尝试删除不存在的数据库
postgres=# DROP DATABASE bar; ERROR: database "bar" does not exist
安全地尝试删除可能不存在的数据库
postgres=# DROP DATABASE IF EXISTS bar; NOTICE: database "bar" does not exist, skipping
尝试删除当前数据库
postgres=# DROP DATABASE postgres; ERROR: cannot drop the currently open database
尝试删除当前正在使用的其他数据库
postgres=# DROP DATABASE foo; ERROR: database "foo" is being accessed by other users DETAIL: There are 2 other sessions using the database.
(注意,PostgreSQL 确定无法删除数据库之前可能会有几秒钟的延迟。)
强制删除当前正在使用的其他数据库(PostgreSQL 13 及更高版本)
postgres=# DROP DATABASE foo WITH (FORCE); DROP DATABASE
无法删除任何模板数据库
postgres=# DROP DATABASE template0; ERROR: cannot drop a template database postgres=# DROP DATABASE template1 WITH (FORCE); ERROR: cannot drop a template database
参考文献
- PostgreSQL 文档: DROP DATABASE