PostgreSQL 教程: DROP SCHEMA 删除模式

九月 14, 2023

摘要:在本教程中,您将学习如何使用 PostgreSQL 的DROP SCHEMA语句删除模式及其对象。

PostgreSQL DROP SCHEMA 语句概述

DROP SCHEMA从数据库中删除模式及其所有对象。下面说明了DROP SCHEMA语句的语法:

DROP SCHEMA [IF EXISTS] schema_name 
[ CASCADE | RESTRICT ];

在这个语法中:

  • 首先,在DROP SCHEMA关键字后指定要从中删除的模式的名称。
  • 其次,使用IF EXISTS选项仅在模式存在时有条件地删除模式。
  • 第三,使用CASCADE删除模式及其所有对象,以及依赖于这些对象的所有对象。如果您只想在模式为空时删除模式,则可以使用RESTRICT选项。默认情况下,DROP SCHEMA使用RESTRICT选项。

要执行DROP SCHEMA语句,您必须是要删除的模式的所有者或超级用户。

PostgreSQL 允许您使用单个DROP SCHEMA语句同时删除多个模式:

DROP SCHEMA [IF EXISTS] schema_name1 [,schema_name2,...] 
[CASCADE | RESTRICT];

PostgreSQL DROP SCHEMA 语句示例

请注意,以下示例使用的模式,是在CREATE SCHEMA教程中创建的,并在ALTER SCHEMA教程中进行了一些修改。

PostgreSQL DROP Schema

1) 使用 DROP SCHEMA 语句删除空模式的示例

此示例使用DROP SCHEMA语句删除accounting模式,如下:

DROP SCHEMA IF EXISTS accounting;

要刷新列表中的模式,请右键单击模式节点并选择刷新菜单项:

PostgreSQL DROP Schema - drop empty schema example

PostgreSQL DROP Schema - drop empty schema example result

2) 使用 DROP SCHEMA 语句删除多个模式的示例

以下示例使用单个DROP SCHEMA语句删除多个模式financemarketing

DROP SCHEMA IF EXISTS finance, marketing;

PostgreSQL DROP Schema - drop multiple schemas

3) 使用 DROP SCHEMA 语句删除非空模式的示例

以下语句删除scm模式:

DROP SCHEMA scm;

以下是消息:

ERROR:  cannot drop schema scm because other objects depend on it
DETAIL:  table scm.deliveries depends on schema scm
view scm.delivery_due_list depends on schema scm
HINT:  Use DROP ... CASCADE to drop the dependent objects too.
SQL state: 2BP01

因此,如果模式不为空并且您想要删除模式及其对象,则必须使用CASCADE选项:

DROP SCHEMA scm CASCADE;

PostgreSQL DROP Schema - drop a non-empty schema

同样,您可以使用以下语句删除sales模式及其对象:

DROP SCHEMA sales CASCADE;

PostgreSQL DROP Schema - drop a non-empty schema example

在本教程中,您学习了如何使用 PostgreSQL 的DROP SCHEMA语句删除数据库中的一个或多个模式。