---
title: "管理一级分区表 | OceanBase 文档中心"
description: 管理一级分区表 分区表创建成功后，您可以对一级分区表进行添加、删除或 Truncate 分区操作。 各类型分区支持操作情况 分区类型 添加一级分区 删除一级分区 Truncate 一级分区 Range 分区 支持 支持 支持 Range Column 分区 支持 支持 支持 List 分区 支持 支持 支持 List…
image: https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*OSPzQ6GUQF4AAAAAQHAAAAgAeiGDAQ/original
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 3.2.3 企业版 LTS

# 管理一级分区表

更新时间：2023-07-18 17:25:59

分区表创建成功后，您可以对一级分区表进行添加、删除或 Truncate 分区操作。

## 各类型分区支持操作情况

| 分区类型 | 添加一级分区 | 删除一级分区 | Truncate 一级分区 |
| --- | --- | --- | --- |
| Range 分区 | 支持 | 支持 | 支持 |
| Range Column 分区 | 支持 | 支持 | 支持 |
| List 分区 | 支持 | 支持 | 支持 |
| List Columns 分区 | 支持 | 支持 | 支持 |
| Hash 分区 | 不支持 | 不支持 | 不支持 |
| Key 分区 | 不支持 | 不支持 | 不支持 |

## 添加一级分区

### 语法

```sql
ALTER TABLE table_name ADD PARTITION (partition_option);

partition_option:
  range_partition_option | list_partition_option

range_partition_option:
  ( PARTITION partition_name VALUES LESS THAN partition_expr
   [, PARTITION partition_name VALUES LESS THAN partition_expr]...
  )

list_partition_option:
  (PARTITION partition_name VALUES IN partition_expr
    [, PARTITION partition_name VALUES IN partition_expr]...
   )

```

> **说明**
>
>  
>
> - 对于 Range/Range Columns 分区，只能在最大的分区之后添加一个分区，不可以在中间或者开始的地方添加。如果当前的分区中有 `MAXVALUE` 的分区，则不能继续添加分区。
>  - List/List Columns 分区添加一级分区时，要求添加的分区不与之前的分区冲突即可。如果一个 List/List Columns 分区有默认分区即 `Default Partition`，则不能添加任何分区。
>  - 在 Range/Range Columns/List/List Columns 分区中添加一级分区不会影响全局索引和局部索引的使用。

### 示例

- 向 Range 分区中添加一级分区。创建 Range 分区表 `tbl1_r`，并添加分区 `M202106`。

  ```sql
  obclient> CREATE TABLE tbl1_r (id INT NOT NULL,value varchar(50),time TIMESTAMP NOT NULL)
         PARTITION BY RANGE(UNIX_TIMESTAMP(time))
          (PARTITION M202101 VALUES LESS THAN(UNIX_TIMESTAMP('2021/02/01')),
           PARTITION M202102 VALUES LESS THAN(UNIX_TIMESTAMP('2021/03/01')),
           PARTITION M202103 VALUES LESS THAN(UNIX_TIMESTAMP('2021/04/01')),
           PARTITION M202104 VALUES LESS THAN(UNIX_TIMESTAMP('2021/05/01')),
           PARTITION M202105 VALUES LESS THAN(UNIX_TIMESTAMP('2021/06/01'))
          );
  Query OK, 0 rows affected

  obclient> ALTER TABLE tbl1_r ADD PARTITION
         (PARTITION M202106 VALUES LESS THAN(UNIX_TIMESTAMP('2021/07/01')));
  Query OK, 0 rows affected

  ```
 - 向 List 分区中添加一级分区。创建 List 分区表 `tbl1_l`，并添加分区 `p2` 和 `p3`。

  ```sql
  obclient> CREATE TABLE tbl1_l (col1 INT PRIMARY KEY,col2 VARCHAR(50))
         PARTITION BY LIST(col1)
          (PARTITION p0 VALUES IN (1,2,3),
           PARTITION p1  VALUES IN (5,6)
          );
  Query OK, 0 rows affected

  obclient> ALTER TABLE tbl1_l ADD PARTITION
         (PARTITION p2 VALUES IN (7,8),
          PARTITION p3  VALUES IN (DEFAULT)
         );
  Query OK, 0 rows affected

  ```

## 删除一级分区

### 语法

```sql
ALTER TABLE table_name DROP PARTITION partition_name_list;

partition_name_list:
  partition_name [, partition_name ...]

```

> **说明**
>
>  
>
> - 删除一级分区时，可以删除一个或多个分区，但不能删除全部分区。
>  - 删除一级分区时，请尽量避免该分区上存在活动的事务或查询，否则可能会导致 SQL 语句报错，或者出现一些异常情况。
>  - 删除分区时，会同时删除分区中的数据，如果只需要删除数据，则可以使用 `TRUNCATE` 语句。

### 示例

删除一级分区表 `tbl1_r` 中的 `M202105` 和 `M202106`。

```sql
obclient> ALTER TABLE tbl1_r DROP PARTITION M202105,M202106;
Query OK, 0 rows affected

```

## Truncate 一级分区

### 语法

```sql
ALTER TABLE table_name TRUNCATE PARTITION partition_name_list;

```

> **说明**
>
>  
>
> - Truncate 一级分区时，可以将一个或多个分区中的数据清空。
>  - 在 Truncate 一级分区时，请尽量避免该分区上存在活动的事务或查询，否则可能会导致 SQL 语句报错，或者出现一些异常情况。

### 示例

清除一级分区表 `tbl1_r` 中 `M202101` 和 `M202102` 分区的数据。

```sql
obclient> ALTER TABLE tbl1_r TRUNCATE PARTITION M202101,M202102;
Query OK, 0 rows affected

```

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
