
# 删除分区
#### 功能描述
删除分区表的一个或多个分区。管理表和OBS表均支持使用本命令删除分区。对于OBS表，还可以使用指定筛选条件删除分区按条件批量删除。
#### 语法格式
```
ALTER TABLE [db_name.]table_name
  DROP [IF EXISTS]
  PARTITION partition_spec1 [, PARTITION partition_spec2, ...];
```
#### 参数说明
| **参数**             | **描述**                                                                                                   |
|:---|:---|
| **db_name**        | 可选。数据库名称，由字母、数字和下划线（_）组成。不能是纯数字，且不能以下划线开头。                                                               |
| **table_name**     | 表名称，由字母、数字和下划线（_）组成。不能是纯数字，且不能以下划线开头。匹配规则为：\^(?!_)(?!\[0-9\]+$)\[A-Za-z0-9_$\]\*$。如果特殊字符需要使用单引号（''）包围起来。 |
| **IF EXISTS**      | 可选关键字。指定该关键字后，若分区不存在则不会报错，静默跳过。                                                                          |
| **partition_spec** | 分区规格，格式为 (col1=val1, col2=val2, ...)。若分区字段为多个字段，可以不包含所有的字段，会删除匹配上的所有分区。                                  |
   
#### 注意事项
- 所要删除分区的表必须是已经存在的表，否则会出错。
- 所要删除的分区必须是已经存在的，否则会出错，可通过语句中添加 IF EXISTS 避免该错误。
- 对于OBS表，删除分区仅删除元数据，OBS目录中的数据文件不会自动删除。
 
#### 示例1：删除指定分区
删除表 student 中 facultyNo=20, classNo=103 的分区。
```
ALTER TABLE student DROP
  PARTITION (facultyNo=20, classNo=103);
```
#### 示例2：使用IF EXISTS删除分区
使用IF EXISTS避免分区不存在时报错。
```
ALTER TABLE student DROP IF EXISTS PARTITION (facultyNo=99, classNo=999), PARTITION (facultyNo=100, classNo=100);
```
#### 示例3：同时删除多个分区
在一条语句中删除多个分区。
```
ALTER TABLE student DROP IF EXISTS
  PARTITION (facultyNo=99, classNo=999);
```
#### 示例4：指定数据库的表删除分区
删除数据库 academy 中表 student 的分区。
```
ALTER TABLE academy.student DROP IF EXISTS
  PARTITION (facultyNo=20, classNo=103);
```
