---
title: "创建分区表表组 | OceanBase 文档中心"
description: 创建分区表表组 本文主要介绍如何在 OceanBase 数据库的 MySQL 模式中创建分区表表组。 注意事项 当前仅具备租户管理员权限的用户才能创建表组。 创建分区表表组前，需要指定表组的分区策略，表组的分区策略需要与待加入表组的分区表的分区策略一致。 创建分区表表组后，表组内的表不能单独进行分区管理操作，只能通过…
---
切换语言

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

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

# 创建分区表表组

更新时间：2026-06-15 15:49:08

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V3.1.5/zh-CN/1400.developer-guide/200.create-and-manage-database-objects/900.create-and-manage-table-groups/200.create-a-table-group/200.create-partition-table-table-group-2.md)  

本文主要介绍如何在 OceanBase 数据库的 MySQL 模式中创建分区表表组。

## 注意事项

- 当前仅具备租户管理员权限的用户才能创建表组。
 - 创建分区表表组前，需要指定表组的分区策略，表组的分区策略需要与待加入表组的分区表的分区策略一致。
 - 创建分区表表组后，表组内的表不能单独进行分区管理操作，只能通过表组对分区表进行分区的统一管理。

## 支持的分区类型

OceanBase 数据库的 MySQL 模式支持创建一级分区表表组及模板化的二级分区表表组。

一级分区表表组的分区类型支持情况如下表所示。

| 一级分区类型 | 一级分区表表组 |
| --- | --- |
| Range / List | 不支持 |
| Range Columns / List Columns / Hash / Key | 支持 |

二级分区表表组的分区类型支持情况如下表所示。

> **说明**
>
>  
>
> 当前版本不支持创建非模板化分区表表组。

| 二级分区类型 | 模板化二级分区表表组 |
| --- | --- |
| Range Columns + List Columns / Range Columns + Hash / Range Columns + Key / List Columns + Hash / List Columns + Key / List Columns + Range Columns | 支持 |

## 创建一级分区表表组

当前支持创建基于 Range Columns 分区、List Columns 分区、Hash 分区和 Key 分区的表组。仅具备租户管理员权限的用户才能创建表组。

### 语法

```sql
CREATE TABLEGROUP tablegroup_name
                  [opt_tablegroup_option_list] [opt_tg_partition_option]

opt_tablegroup_option_list:
tablegroup_option [tablegroup_option]

tablegroup_option:
LOCALITY [=] locality_name
| PRIMARY_ZONE [=] primary_zone_name

opt_tg_partition_option:
PARTITION BY
 KEY column_num  PARTITIONS INTNUM
| HASH PARTITIONS INTNUM
| RANGE COLUMNS column_num {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
| LIST COLUMNS column_num {PARTITION partition_name VALUES IN list_partition_expr, ...}

```

### 参数解释

| **参数** | **描述** |
| --- | --- |
| tablegroup_name | 表组名称，最长 64 个字符，字符只能有大小写英文字母，数字和下划线，而且必须以字母或下划线开头，并且不能使用 OceanBase 数据库的关键字。 如果要创建的表组名称已存在，并且没有指定 `IF NOT EXISTS`，则会出现错误。 |
| opt_tablegroup_option_list | 数据表的分区方式、Locality、Primary Zone 必须和表组完全一致。   - 相同的 Locality：指副本类型、个数、位置要完全一致 - 相同的 Primary zone：指 Leader 位置及其优先级要完全一致 - 相同的分区方式：      - 分区类型相同（例如，都是 `HASH`+`RANGE` 分区）。     - 如果是 `KEY` 分区，要求引用的列数相同，且分区个数相同。     - 如果是 `HASH` 分区，要求分区个数相同。     - 如果是 `RANGE COLUMNS` 分区，要求引用的列数相同，且分区数相同，且 `RANGE` 分割点相同。     - 如果是 `RANGE` 分区，且分区数相同，且 `RANGE` 分割点相同。     - 如果是 `List COLUMNS` 分区，要求引用的列数相同，且分区数相同，且 `List COLUMNS` 分割点相同。     - 如果是 `List` 分区，且分区数相同，且 `List` 分割点相同。     - 对于二级分区，根据分区类型，要求与上面一致。     **注意**   组内的表信息不能独立变更某一项，只可以通过操作表组进行批量操作。 |
| opt_tg_partition_option | 表组的分区规则定义，与 `CREATE TABLE` 使用同样的分区方式。 表组没有具体的列定义，所以 `KEY`、`RANGE COLUMNS`、`LIST COLUMNS` 不需要写出具体的列，只需要指定列个数（`COLUMN_NUM`）。 |
| COLUMN_NUM | 代表分区键数目。 |

### 示例

- 创建 Range Columns 分区的表组。

  ```sql
  obclient> CREATE TABLEGROUP tblgroup1 PARTITION BY RANGE COLUMNS 1
              ( PARTITION p0 VALUES LESS THAN(100),
                PARTITION p1 VALUES LESS THAN(200)
               );
  Query OK, 0 rows affected

  ```
 - 创建 List Columns 分区的表组。

  ```sql
  obclient> CREATE TABLEGROUP tblgroup1 PARTITION BY LIST COLUMNS 1
              ( PARTITION p_northwest VALUES IN('OR', 'WA'),
                PARTITION p_southwest VALUES IN('AZ', 'UT', 'NM')
              );
  Query OK, 0 rows affected

  ```
 - 创建 Hash 分区的表组。

  ```sql
  obclient> CREATE TABLEGROUP tg1_h PARTITION BY HASH PARTITIONS 10;
  Query OK, 0 rows affected

  ```
 - 创建 Key 分区的表组。

  ```sql
  obclient> CREATE TABLEGROUP tblgroup1 PARTITION BY KEY 1 PARTITIONS 10;
  Query OK, 0 rows affected

  ```

## 创建模板化二级分区表表组

### 语法

```sql
CREATE TABLEGROUP [IF NOT EXISTS] tablegroupname [opt_tablegroup_option_list] [opt_tg_partition_option]

opt_tg_partition_option:
    PARTITION BY
      KEY column_num [tg_subpartition_option] PARTITIONS int_num
    | HASH [tg_subpartition_option] PARTITIONS INTNUM
    | RANGE COLUMNS column_num [tg_subpartition_option]
          {PARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
    | LIST COLUMNS column_num [tg_subpartition_option]
          {PARTITION partition_name VALUES IN list_partition_expr, ...}

tg_subpartition_option:
SUBPARTITION BY
     RANGE COLUMNS column_num SUBPARTITION TEMPLATE
          {SUBPARTITION partition_name VALUES LESS THAN range_partition_expr, ...}
    | HASH SUBPARTITIONS INTNUM
    | KEY column_num SUBPARTITIONS INTNUM
    | LIST COLUMNS column_num SUBPARTITION TEMPLATE
          {SUBPARTITION partition_name VALUES IN list_partition_expr, ...}

```

### 示例

- 创建 Range Columns + List Columns 分区的模板化二级分区表表组。

  ```sql
  obclient> CREATE TABLEGROUP tg2_m_rclc
         PARTITION BY RANGE COLUMNS 1
         SUBPARTITION BY LIST COLUMNS 1
         SUBPARTITION TEMPLATE
         (SUBPARTITION mp0 VALUES IN('A','B'),
          SUBPARTITION mp1 VALUES IN('C','D'),
          SUBPARTITION mp2 VALUES IN('E','F')
         )
         (PARTITION p0 VALUES LESS THAN(100),
          PARTITION p1 VALUES LESS THAN(200),
          PARTITION p2 VALUES LESS THAN(300)
         );
  Query OK, 0 rows affected

  ```
 - 创建 Range Columns + Hash 分区的模板化二级分区表表组。

  ```sql
  obclient> CREATE TABLEGROUP tg2_m_rch
         PARTITION BY RANGE COLUMNS 1
         SUBPARTITION BY HASH SUBPARTITIONS 5
         (PARTITION p0 VALUES LESS THAN(100),
          PARTITION p1 VALUES LESS THAN(200),
          PARTITION p2 VALUES LESS THAN(300)
         );
  Query OK, 0 rows affected

  ```
 - 创建 Range Columns + Key 分区的模板化二级分区表表组。

  ```sql
  obclient> CREATE TABLEGROUP tg2_m_rck
         PARTITION BY RANGE COLUMNS 1
         SUBPARTITION BY KEY 1 SUBPARTITIONS 3
         (PARTITION p0 VALUES LESS THAN(100),
          PARTITION p1 VALUES LESS THAN(200),
          PARTITION p2 VALUES LESS THAN(300)
         );
  Query OK, 0 rows affected

  ```
 - 创建 List Columns + Range Columns 分区的模板化二级分区表表组。

  ```sql
  obclient> CREATE TABLEGROUP tg2_m_lcrc
         PARTITION BY LIST COLUMNS 1
         SUBPARTITION BY RANGE COLUMNS 1
         SUBPARTITION TEMPLATE
         (SUBPARTITION mp0 VALUES LESS THAN(100),
          SUBPARTITION mp1 VALUES LESS THAN(200),
          SUBPARTITION mp2 VALUES LESS THAN(300)
         )
         (PARTITION p0 VALUES IN('A','B'),
          PARTITION p1 VALUES IN('C','D'),
          PARTITION p2 VALUES IN('E','F')
         );
  Query OK, 0 rows affected

  ```
 - 创建 List Columns + Hash 分区的模板化二级分区表表组。

  ```sql
  obclient> CREATE TABLEGROUP tg2_m_lch
         PARTITION BY LIST COLUMNS 1
         SUBPARTITION BY HASH SUBPARTITIONS 5
         (PARTITION p0 VALUES IN('01','02'),
          PARTITION p1 VALUES IN('03','04'),
          PARTITION p2 VALUES IN('05','06')
         );
  Query OK, 0 rows affected

  ```
 - 创建 List Columns + Key 分区的模板化二级分区表表组。

  ```sql
  obclient> CREATE TABLEGROUP tg2_m_lck
         PARTITION BY LIST COLUMNS 1
         SUBPARTITION BY KEY 1 SUBPARTITIONS 5
         (PARTITION p0 VALUES IN('01','02'),
          PARTITION p1 VALUES IN('03','04'),
          PARTITION p2 VALUES IN('05','06')
         );
  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) 咨询热线
