

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# DROP SCHEMA
DROP SCHEMA

删除 schema。对于外部架构，您还可以删除与该架构关联的外部数据库。此命令无法撤消。

## 所需的权限
所需的权限

以下是 DROP SCHEMA 所需的权限：
+ Superuser
+ Schema 拥有者
+ 具有 DROP SCHEMA 权限的用户

## 语法
语法

```
DROP SCHEMA [ IF EXISTS ] name [, ...]
[ DROP EXTERNAL DATABASE ]
[ CASCADE | RESTRICT ]
```

## 参数
参数

IF EXISTS  
一个子句，指示如果指定的 schema 不存在，则命令不应进行任何更改，并返回一条指示 schema 不存在的消息，而不是以错误终止。  
此子句在编写脚本时很有用，可使在 DROP SCHEMA 针对不存在的 schema 运行时脚本不会失败。

 *名称*   
要删除的架构的名称。您可以指定以逗号分隔的多个架构名称。

 DROP EXTERNAL DATABASE   
这个子句指示，如果删除外部架构，则删除与它关联的外部数据库（如果存在）。如果不存在外部数据库，则该命令将返回一条消息，说明不存在外部数据库。如果删除多个外部架构，则删除与指定架构关联的所有数据库。  
如果外部数据库包含从属对象（如表），则还应包括 CASCADE 选项以删除从属对象。  
删除外部数据库时，还会删除与该数据库关联的任何其他外部架构的数据库。使用该数据库的其他外部架构中定义的表也将被删除。  
DROP EXTERNAL DATABASE 不支持存储在 HIVE 元存储中的外部数据库。

CASCADE  
一个关键字，指示自动删除架构中所有对象。如果指定了 DROP EXTERNAL DATABASE，则还会删除外部数据库中的所有对象。

RESTRICT  
一个关键字，指示如果架构中包含任何对象，则不删除该架构或外部数据库。此操作是默认操作。

## 示例
示例

以下示例删除名为 S\$1SALES 的架构。本示例使用 RESTRICT 作为安全机制，以便在 schema 包含对象的情况下不会将其删除。在这种情况下，您需要先删除架构对象，然后再删除架构。

```
drop schema s_sales restrict;
```

以下示例删除名为 S\$1SALES 的架构以及依赖该架构的所有对象。

```
drop schema s_sales cascade;
```

以下示例删除 S\$1SALES schema（如果存在）；如果不存在该 schema，则不执行任何操作并返回一条消息。

```
drop schema if exists s_sales;
```

以下示例删除名为 S\$1SPECTRUM 的外部架构以及与之关联的外部数据库。此示例使用 RESTRICT，以便在架构和数据库包含任何对象时不会将其删除。在这种情况下，您需要先删除从属对象，然后再删除架构和数据库。

```
drop schema s_spectrum drop external database restrict;
```

以下示例删除多个架构、与之关联的外部数据库以及任何从属对象。

```
drop schema s_sales, s_profit, s_revenue drop external database cascade;
```