一级分区表 
==========================

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

添加一级分区 
---------------------------

* Range/List 分区

  对于 Range 分区，只能在最大的分区之后添加一个分区，不可以在中间某个或者开始的地方添加。如果当前的分区中有 `MAXVALUE` 的分区，则不能继续添加分区。

  List 分区添加一级分区时，要求添加的分区不与之前的分区冲突即可。如果一个 List 分区有默认分区即 `Default Partition`，则不能添加任何分区。

  MySQL 模式下，在 Range/List 分区中添加一级分区的语法格式如下：

  ```sql
  ALTER TABLE table_name
    ADD PARTITION 
    (
      partition_defines
    )
  ```

  

  在 Range/List 分区中添加一级分区不会影响全局索引和局部索引的使用。
  

* Hash/Key 分区

  对于 Hash/Key 分区，目前 OceanBase 数据库暂不支持添加一级分区。
  




删除一级分区 
---------------------------

删除一级分区时，可以删除一个或多个分区，但不能删除全部分区。

* Range/List 分区

  对于 Range/List 分区，删除分区时，同时会删除分区中的数据。

  MySQL 模式下，删除一级分区的语法格式如下：

  ```sql
  obclient> ALTER TABLE table_name DROP PARTITION p1;
  
  obclient> ALTER TABLE table_name DROP PARTITION p1,p2;
  ```

  

  删除分区时，会同时删除分区中的数据，如果只需要删除数据，则可以使用 `TRUNCATE` 语句。
  

* Hash/Key 分区

  对于 Hash/Key 分区，目前 OceanBase 数据库暂不支持删除一级分区。
  




Truncate 一级分区 
----------------------------------

OceanBase 数据库支持对一级分区表中的 Range/List 分区执行 Truncate 操作，将一个或多个分区中的数据全部移除。

MySQL 模式下，Truncate 一级分区的语法格式如下：

```sql
obclient> ALTER TABLE table_name TRUNCATE PARTITION p1;

obclient> ALTER TABLE table_name TRUNCATE PARTITION p1,p2;
```


