---
title: "新建表 | OceanBase 文档中心"
description: 新建表 概述 OceanBase 开发者中心（OceanBase Developer Center，ODC）支持可视化方式创建表。本文介绍如何使用 ODC 创建表。 如上图所示，创建表包含以下 7 个步骤： 指定基本信息。 设置列。 设置索引。 设置约束。 设置分区规则。 确认 SQL。 完成新建表。 操作步骤 以在…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*lqS5SYzz_YEAAAAAAAAAAAAADiGDAQ/original) 开发者中心 ODCV 4.0.0 企业版

# 新建表

更新时间：2023-02-28 18:03:26

## 概述

OceanBase 开发者中心（OceanBase Developer Center，ODC）支持可视化方式创建表。本文介绍如何使用 ODC 创建表。

![新建表](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%A6%82%E8%BF%B0.png)

如上图所示，创建表包含以下 7 个步骤：

1. 指定基本信息。
 2. 设置列。
 3. 设置索引。
 4. 设置约束。
 5. 设置分区规则。
 6. 确认 SQL。
 7. 完成新建表。

## 操作步骤

以在 ODC 中创建员工表（employee）为例，员工表中包含员工工号（emp_no）、员工生日（birthdate）、员工姓名（name）和员工性别（gender）。具体操作步骤如下：

### 步骤 1：指定基本信息

在 OceanBase 开发者中心（OceanBase Developer Center，ODC）单击连接名进入连接后，在左侧导航栏中单击 **表** 标签可查看表列表。在表列表的右上角，单击 **+** 创建表，或在顶部导航栏中单击 **新建** 以创建所需对象。

在 **基本信息** 中，输入 **表名称** 和表的 **描述** 。

![新建表-步骤1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A41.png)

> **说明**
>
>  
>
> - 在 MySQL 模式下，同时需要选择默认字符集和默认排序规则。
>  - 完成指定基本信息并切换至设置列步骤后，表示确认提交基本信息。

### 步骤 2：设置列

如下图所示，添加一列时需指定以下信息：

![step 2](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A42.png)

| 信息项 | 说明 |
| --- | --- |
| 名称 | 指定字段（列）的名称。 |
| 类型 | 指定字段（列）的数据类型。    具体数据类型，请参考 [OceanBase 数据库的开发指南](https://www.oceanbase.com/docs/enterprise/oceanbase-database/oceanbase-database/V3.2.3/data-type-overview)。 |
| 长度 | 指定类型长度。 |
| 小数点 | 设置类型精度。 |
| 非空 | 是否限制该字段（列）的值不能为空。 |
| 自增（MySQL 模式下） | 选择是否为自增列。   **注意**    每个表仅允许设置一个自增字段（列）。    当一个字段（列）设置为自增后，其余字段（列）不可勾选，需取消勾选后，才可设置其它字段（列）为自增字段（列）。 |
| 虚拟列 | 选择是否创建虚拟列。   **注意**    如果已勾选虚拟列，则 **必须** 填写表达式。    在创建虚拟列时需要定义虚拟列依赖的表达式，虚拟列包含 Virtual Column 和 Stored Column，仅在使用时会根据表达式计算出虚拟列的值，因此在向表中插入数据的时候，不能为虚拟列指定要插入的值。 |
| 缺省值/表达式 | 该字段（列）的默认值/表达式。 |
| 注释 | 对该字段（列）的说明。 |

设置列页面提供 3 种功能操作：

| 功能项 | 说明 |
| --- | --- |
| 工具栏操作 | 通过列页面顶部的工具栏可添加和删除列。 |
| 单击行序号 | - 单击行序号，选中整行，显示辅助菜单（新建、删除）。     - 单击并选中行序号，可拖动整行参数以调整顺序。 |
| 鼠标右键操作 | 右键单击鼠标选中整行，进行复制行 / 向下移动一行。 |

> **说明**
>
>  
>
> - 复制行后，可选中某行并通过快捷键 Command + V / Ctrl + V 对进行粘贴。
>  - 页面底部的辅助编辑区域会显示所选中列的相关提示信息。
>  - 基本信息和列为必填项，其它为选填项，填写基本信息和列后，可以直接提交并确认 SQL 新建表。

### 步骤 3：设置索引

当表中包含大量数据，可以使用索引更快速的查询数据。索引是表中对某一列或多个列的值进行预排序的数据结构。通过使用索引，可以直接定位到符合条件的记录。

如下图所示，需指定以下信息：

![step 3](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A43.png)

| 信息项 | 说明 |
| --- | --- |
| 索引名称 | 为该索引指定的名称。 |
| 范围 | 默认值为 **GLOBAL** ，支持 **GLOBAL** （全局索引）/ **LOCAL** （局部索引）。 |
| 方法 | 默认值为 **BTREE** （全局索引），支持 **空/BTREE/HASH** 。    - BTREEB 以 B+树结构存储数据，适用于在范围查找的SQL语句中。     - HASH 索引基于 HASH 表实现，只有查询条件精确匹配 HASH 索引中的所有列才会用到 HASH 索引，仅能满足"=","IN"和"<=>"查询，HASH 索引无法用于排序，不适用于区分度小的列上，例如员工性别（gender）。 |
| 索引类型 | 默认值为 **NORMAL** ，支持 **NORMAL****/UNIQUE/FULLTEXT** 。    - NORMAL 表示普通索引。    - UNIQUE 表示唯一的、不允许重复的索引，例如员工工号（emp_no）。     - FULLTEXT 表示全文搜索的索引，用于搜索包含大量数据的表。 |
| 列 | 选择索引所在的列，需注意索引列的顺序。 |
| 不可见 | 选择设置的索引是否可见。 |

设置索引页面提供以下功能键：

| 功能项 | 说明 |
| --- | --- |
| +新建 | 添加一个新索引。 |
| 删除 | 删除当前选中的索引。 |

### 步骤 4：设置约束

约束用于规定表中的数据规则。如果存在违反约束的数据行为，该行为会被约束终止。

![step 4](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A44.png)

ODC 中支持设置的表级约束包括以下 4 种：

- **主键约束** ：定义一个主键来唯一标识表中的每一行数据。主键约束可为一个字段或是一组字段，一张表中只能设置一个主键约束，且设置完成后不支持编辑。
 - **唯一约束** ：保证在一个字段或者一组字段里的数据在表中是唯一的，一张表中可设置多个唯一约束。
 - **外键约束** ：在两个表的数据之间建立连接（可为一列或多列），旨在保持关联表之间数据的一致性、完整性。设置完成后不支持新增和编辑。
 - **检查约束** ：在编辑数据库数据时，按照设置的检查规则进行校验，校验通过才允许数据修改操作。

由于 OceanBase 数据库中 MySQL 模式和 Oracle 模式支持的约束不同，而不同约束所需的信息也略有不同，因此请根据所选的约束方法按页面上的要求指定所需信息：

| 信息项 | 说明 |
| --- | --- |
| 约束名称 | 指定约束的名称。 |
| 列信息 | 选择一个字段或者一组字段作为约束。 |
| 关联 Schema（Oracle 模式下） | 使用 **外键约束** 时需指定关联表（父表）所在的 Schema。 |
| 关联数据库（MySQL 模式下） | 使用 **外键约束** 时需指定关联表（父表）所在的数据库。 |
| 关联表 | 使用 **外键约束** 时需指定关联表（父表）。 |
| 关联字段 | 使用 **外键约束** 时需指定关联字段（父表）。 |
| 删除 | 指定删除关联表（父表）中的数据时，当前表（子表）对应的动作。    可指定 **CASCADE** 、 **NO ACTION****、****RESTRICT** 和 **SET NULL** 等四种对应的动作。    MySQL 和 Oracle 模式下所支持的外键动作不同：    - MySQL 模式下，OceanBase 可指定 CASCADE、NO ACTION、RESTRICT 和 SET NULL；     - Oracle 模式下，OceanBase 可指定 CASCADE、NO ACTION 和 SET NULL。   **注意**    OceanBase 暂不支持 **SET NULL** 动作。    相关语法，请参考 [OceanBase](https://www.oceanbase.com/docs/oceanbase-database/oceanbase-database/V3.2.1/create-table)或 MySQL/Oracle 官网文档。 |
| 更新 | 指定更新关联表（父表）中的数据时，当前表（子表）对应的动作。    可指定 **CASCADE** 、 **NO ACTION** 、 **RESTRICT** 和 **SET NULL** 等四种对应的动作。    MySQL 和 Oracle 模式下所支持的外键动作不同：    - MySQL 模式下，OceanBase 可指定 CASCADE、NO ACTION、RESTRICT 和 SET NULL；     - Oracle 模式下，OceanBase 可指定 NO ACTION。   **注意**    OceanBase 暂不支持 **SET NULL** 动作。    相关语法，请参考 [OceanBase](https://www.oceanbase.com/docs/oceanbase-database/oceanbase-database/V3.2.1/create-table)或 MySQL/Oracle 官网文档。 |
| 检查条件 | 指定执行 **检查约束** 时校验数据的检查规则。 |

设置约束页面提供以下功能键：

| 功能项 | 说明 |
| --- | --- |
| +新建 | 添加一个新约束。 |
| 删除 | 删除当前选中的约束。 |

### 步骤 5：设置分区规则

![step 5](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A45.png)

当表中包含大量数据时，可以对表进行分区。表进行分区后，表中的数据会存放到多个表空间，每次查询数据时不会扫描整张表。

- OceanBase 中 MySQL 模式支持六种分区方法： **key** 、 **Hash** 、 **Range** 、 **Range Columns** 、 **List** 和 **List Columns** 。
 - Oracle 模式支持三种分区方法： **List** 、 **Range** 和 **Hash** 。

  由于在 MySQL 模式和 Oracle 模式下分区的定义不同，因此以下信息在不同模式下的意义略有不同，请根据所选的分区方法按其定义指定以下信息：

  | 信息项 | 说明 |
  | --- | --- |
  | 分区方法 | 指定分区方法。 MySQL 模式和 Oracle 模式下支持的分区方法不同。    - Range 分区：基于属于一个给定连续区间的列值，将多行分配给分区。范围必须是有序的、连续的和不重叠的。     - List 分区：基于数据的枚举值进行分区。     - Hash 分区：基于给定的分区个数进行分区。对于分布规则不明显的数据，并没有明显的范围查找等特征，可以使用HASH分区，将数据分区列的值按照HASH算法打散到不同的分区上，将数据随机分布到各个分区。     -Key 分区：类似于按 HASH 分区，区别在于 KEY 分区只支持计算一列或多列，且 MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。     有关分区方法，请参见 [OceanBase 数据库分区表](https://www.oceanbase.com/docs/enterprise/oceanbase-database-cn/V3.2.3/10000000000357153)。 |
  | 字段 | 选择作为分区键的字段。 |
  | 表达式 | 根据表达式的返回值进行分区（Oracle 模式下不支持分区表达式）。 |
  | 分区 | 根据所选的 **分区方法** ，可能需要指定 **分区名称** 、 **分区数量** 、 **区间上限值** 或 **值枚举** 等信息。 可添加多个分区，并拖动已选字段进行排序。 |

### 步骤 6：确认 SQL

![新建表-步骤六](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A46.png)

单击 **提交** 后，在 SQL 确认页面查看语句，支持 **格式化** 语句以方便查看。

语法格式如下：

```sql
CREATE TABLE table_name (column_name column_type, column_name column_type,.......);

```

参数说明：

| 参数 | 说明 |
| --- | --- |
| CREATE TABLE | 用于创建给定名称的表，必须拥有表 CREATE 的权限。 |
| table_name | 创建表的名称，表名称必须符合标识符命名规则。 |
| column_name column_type | 指定数据表中每个列（字段）的名称和数据类型，如果创建多个列，需要用逗号隔开。 |

### 步骤 7：完成新建表

单击 **执行** ，完成新建表后，会在左侧导航栏的表列表中出现新建的 employee 表。

![新建表-步骤七-1](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A47.png)

> **说明**
>  在左侧导航栏中，右键鼠标单击表列表中的表名，通过弹出的管理操作列表（包括 **查看表结构** 、 **查看 DDL** 、 **查看表数据** 、 **新建表** 、 **导入** 、 **导出** 、 **下载** 、 **模拟数据** 、 **打开 SQL 窗口** 、 **复制** 、 **重命名** 、 **删除** 和 **刷新** ），可快速管理和操作目标对象。

表对象具体操作，请参见 [表数据管理](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833886)。

支持使用关键字 `SELECT` 查询新建的表数据。

语法格式：

```sql
SELECT
 column_name,
 column_name
FROM
 table_name [WHERE Clause] [LIMIT N] [ OFFSET M]

```

参数说明：

| 参数 | 说明 |
| --- | --- |
| SELECT | SELECT 命令可以读取一条或者多条记录。 |
| column_name | 指定查列名称。 使用星号（*）默认查询所有列信息。 |
| WHERE | 条件语句。 |
| LIMIT | 设定返回的记录数。 |
| OFFSET | 指定 SELECT 语句开始查询的数据偏移量。 默认情况下偏移量为 0。 |

示例：

```sql
SELECT `emp_no`, `birthdate`, `name`, `gender` FROM `employee`;

```

![新建表-步骤8](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odc/340/%E6%96%B0%E5%BB%BA%E8%A1%A8-%E6%AD%A5%E9%AA%A48.png)

## 相关信息

- [新建视图](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833880)
 - [新建函数](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833877)
 - [新建存储过程](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000834088)
 - [新建序列](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833891)
 - [新建程序包](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833874)
 - [新建触发器](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833871)
 - [新建类型](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000834091)
 - [新建同义词](https://www.oceanbase.com/docs/enterprise-odc-doc-cn-10000000000833888)

 上一篇 下一篇 ![有帮助](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) 咨询热线
