首批通过分布式安全可靠测评,为关键业务系统打造
新建表
更新时间:2026-04-07 10:55:47
OceanBase 开发者中心(OceanBase Developer Center,ODC)支持可视化方式创建表。本文档旨在介绍如何使用 ODC 创建表。
背景信息
逻辑表
ODC V4.3.2 及之后的版本支持将多个(或单个)物理库配置成一个逻辑库并配置逻辑表,以查询和管理复杂、庞大的分库与分表。详情请参见 逻辑库管理。
说明
如无逻辑库权限,您可以通过项目/工单中的 申请库权限 申请逻辑库权限。
逻辑表表达式规则
| 规则类型 | 规则名称 | 举例说明 |
| 简单规则 | 自然序 | db.test_[0-7]:创建 8 张表。 |
| 自然对齐序 |
|
|
| 跳跃前缀自然(不前缀补 0)对齐序 | db.test_[0-8:2]:2 为步长,创建 5 张表(db.test_0、db.test_2、db.test_4、db.test_6、db.test_8)。 |
|
| 跳跃前缀长度补 0 对齐序 | db.test_[00-07:3]:步长为 3,创建 3 张表(db.test_00、db.test_03、db.test_06) 。 |
|
| 规则居中序 | db.test_[00-31]_t:后缀影子表。 |
|
| 多级规则 | 日期类序 | db.test_[01-12]_[01-31]:创建 12 个月,每个月 31 天的表,即 12*31 张表。 |
| 跳跃二级序 | db.test_[01-12:2]_[01-31:2]:创建单月(1,3,5,.....11),每个月奇数天的表 (1,3,5,.....31),即 6*16 张表。 |
|
| 数据库及联表规则 | 相同名称规则 | db_[00-31].test:在 db_00 到 db_31 数据库下都定义 test 表。 |
| 平均分配规则 | db_[00-31].test[0000-1023]:在 db_00 到 db_31 数据库下一共存在 1024 张表。 |
|
| 枚举规则 | 简单枚举 | db.test_[1,3,6,8,9]:在指定的分库中创建 5 张表。 |
| 复杂枚举规则 | 通过多个表达式,将表平均分配到指定的分库中:db.test_[1,3,6,8,9],db.test_[2,4,5,7,10] |
|
| 数据库及枚举 | 数据库下创建相同的规则 | db_[00-31].test_[[00-31]]:在 32 个数据库下,各创建 test_[00-31] 的表。 |
| 数据库下枚举 | db_01.test_[1,2,4,6,7],db_02.test_[2,3,5,7,9],db_03.test_[1,4,6,7,9]:在 3 个数据库下各创建 5 张表。 |
|
| 数据库下不均等表 | db_01.test_[1-7],db_02.test_[10-15]:在数据库 db_01 下创建 7 张表,在数据库 db_02 下创建 6 张表。 |
新建内部表

如上图所示,创建内部表包含以下 7 个步骤:
指定基本信息。
设置列。
设置索引。
设置约束。
设置分区规则。
确认 SQL。
完成新建表。
新建外表
外表是指一个逻辑上的表对象,其对应的实际数据存储位置并不在数据库内部,而是存储于外部存储服务中。具体请参见 关于外表。
ODC V4.3.3 及之后的版本支持在 SQL 窗口中执行 SQL 命令创建外部表,以通过指定的文件路径将外部文件映射到 ODC 数据库中,您可以从资源树列表中查看已创建的外部表。具体请参见 OceanBase 创建外表。
ODC 支持使用 CREATE EXTERNAL TABLE 语句创建外表。
注意
- 外表仅支持只读,可用于查询语句,但不能执行 DML 操作。
- 通过本地文件在 ODC 中创建外表前,您需要设置
secure_file_priv变量。该设置仅支持通过本地 Unix Socket 连接 OceanBase 数据库,ODC 目前不支持此类连接方式,您需要通过 OBClient 工具配置。
- 准备外部文件。
- 在 ODC SQL 创建中执行 SQL 命令创建外表。
- 资源树中查看创建的外表。
操作步骤
新建内部表
本章节以创建表为例,介绍如何在 SQL 窗口中创建表 employee 到数据库 odc_test 中,员工表中包含员工工号(emp_no)、员工生日(birthday)、员工姓名(name)和员工性别(gender)。
说明
文中所使用的均为示例数据,您可根据实际情况对数据进行替换。
步骤一:指定基本信息
登录数据库并进入 SQL 开发窗口后,在左侧导航栏中单击 表 标签可查看表列表。在表列表的右上角,单击 + 以创建表对象。
在 基本信息 中,输入 表名称、选择 存储模式 和表的 描述。

说明
- 在 MySQL 模式下,同时需要选择默认字符集和默认排序规则。
- 完成指定基本信息并切换至设置列步骤后,表示确认提交基本信息。
- 仅 OceanBase V4.3.0 及之后的版本支持配置列存。
步骤二:设置列
说明
ODC V4.2.3 及之后的版本支持创建包含 OceanBase MySQL/MySQL 空间数据类型(GIS)字段(列)的表。
如下图所示,添加一列时需指定以下信息:

说明
- 复制行后,可选中某行并通过快捷键 Command + V / Ctrl + V 进行粘贴。
- 页面底部的辅助编辑区域会显示所选中列的相关提示信息。
- 基本信息和列为必填项,其它为选填项,填写基本信息和列后,可以直接提交并确认 SQL 新建表。
步骤三:设置索引
当表中包含大量数据,可以使用索引更快速的查询数据。索引是表中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以直接定位到符合条件的记录。
如下图所示,需指定以下信息:

步骤四:设置约束
约束用于规定表中的数据规则。如果存在违反约束的数据行为,该行为会被约束终止。

ODC 中支持设置的表级约束包括以下 4 种:
主键约束:定义一个主键来唯一标识表中的每一行数据。主键约束可为一个字段或是一组字段,一张表中只能设置一个主键约束,且设置完成后不支持编辑。
唯一约束:保证在一个字段或者一组字段里的数据在表中是唯一的,一张表中可设置多个唯一约束。
外键约束:在两个表的数据之间建立连接(可为一列或多列),旨在保持关联表之间数据的一致性、完整性。设置完成后不支持新增和编辑。
检查约束:在编辑数据库数据时,按照设置的检查规则进行校验,校验通过才允许数据修改操作。
步骤五:设置分区规则

当表中包含大量数据时,可以对表进行分区。表进行分区后,表中的数据会存放到多个表空间,每次查询数据时不会扫描整张表。ODC V4.3.3 及之后的版本支持展示二级分区。
OceanBase 中 MySQL 模式支持六种分区方法**:key、Hash、Range、Range Columns、List** 和 List Columns 。
Oracle 模式支持三种分区方法**:List、Range** 和 Hash 。
步骤六:确认 SQL

单击 提交 后,在 SQL 确认页面查看语句,支持 SQL 检查 和 格式化 语句以方便查看。
语法格式如下:
CREATE TABLE table_name (column_name column_type, column_name column_type,.......);
参数说明:
| 参数 | 说明 |
|---|---|
| CREATE TABLE | 用于创建给定名称的表,必须拥有表 CREATE 的权限。 |
| table_name | 创建表的名称,表名称必须符合标识符命名规则。 |
| column_name column_type | 指定数据表中每个列(字段)的名称和数据类型,如果创建多个列,需要用逗号隔开。 |
步骤七:完成新建表
单击 执行 ,完成新建表后,会在左侧导航栏的表列表中出现新建的 employee 表。

说明
在左侧导航栏的表列表中,单击表名右侧的更多图标,通过弹出的管理操作列表(包括 查看表结构、查看表数据、 导入、 导出、 下载、 模拟数据、打开 SQL 窗口、复制、删除 和 刷新),可快速管理和操作目标对象。表对象具体操作,请参见 常用功能简介。
支持使用关键字 SELECT 查询新建的表数据。
语法格式:
SELECT
column_name,
column_name
FROM
table_name [WHERE Clause] [LIMIT N] [ OFFSET M]
参数说明:
| 参数 | 说明 |
|---|---|
| SELECT | SELECT 命令可以读取一条或者多条记录。 |
| column_name | 指定查列名称。 使用星号(*)默认查询所有列信息。 |
| WHERE | 条件语句。 |
| LIMIT | 设定返回的记录数。 |
| OFFSET | 指定 SELECT 语句开始查询的数据偏移量。 默认情况下偏移量为 0。 |
示例:
SELECT `emp_no`, `birthdate`, `name`, `gender` FROM `employee`;

步骤一:指定基本信息
登录数据库并进入 SQL 开发窗口后,在左侧导航栏中单击 表 标签可查看表列表。在表列表的右上角,单击 + 以创建表对象。

在 基本信息 中,输入 逻辑表表达式 和逻辑表的 **描述**等信息。
注意
- 逻辑表表达式中须包含库名。例如:
odc_test.employee[00-09],其中odc_test为库名,employee为表名,[00-09]为共创建 10 张表。 - 生成的逻辑表名默认为物理表名非序号部分的共同字符串。例如,物理表名分别为
db.test_0,db.test_1,db.test_2,db.test_3,则生成的逻辑表名为test。逻辑表表达式为db.test_[0-3]。具体请参见本文中的 逻辑表表达式规则。
- 逻辑表表达式中须包含库名。例如:
步骤二:设置列
如下图所示,添加一列时需指定以下信息:
说明
- 复制行后,可选中某行并通过快捷键 Command + V / Ctrl + V 进行粘贴。
- 页面底部的辅助编辑区域会显示所选中列的相关提示信息。
- 基本信息和列为必填项,其它为选填项,填写基本信息和列后,可以直接提交并确认 SQL 新建表。
步骤三:设置索引
当表中包含大量数据,可以使用索引更快速的查询数据。索引是表中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以直接定位到符合条件的记录。
如下图所示,需指定以下信息:
步骤四:设置约束
约束用于规定表中的数据规则。如果存在违反约束的数据行为,该行为会被约束终止。
ODC 中支持设置的表级约束包括以下 4 种:
主键约束:定义一个主键来唯一标识表中的每一行数据。主键约束可为一个字段或是一组字段,一张表中只能设置一个主键约束,且设置完成后不支持编辑。
唯一约束:保证在一个字段或者一组字段里的数据在表中是唯一的,一张表中可设置多个唯一约束。
外键约束:在两个表的数据之间建立连接(可为一列或多列),旨在保持关联表之间数据的一致性、完整性。设置完成后不支持新增和编辑。
检查约束:在编辑数据库数据时,按照设置的检查规则进行校验,校验通过才允许数据修改操作。
步骤五:设置分区规则
当表中包含大量数据时,可以对表进行分区。表进行分区后,表中的数据会存放到多个表空间,每次查询数据时不会扫描整张表。
OceanBase 中 MySQL 模式支持六种分区方法**:key**、Hash、Range、Range Columns、List 和 List Columns 。
Oracle 模式支持三种分区方法**:List**、Range 和 Hash 。
步骤六:确认 SQL
单击 提交 后,在 SQL 确认页面查看语句,支持 格式化 语句以方便查看。
语法格式如下:
CREATE TABLE table_name (column_name column_type, column_name column_type,.......);
参数说明:
| 参数 | 说明 |
|---|---|
| CREATE TABLE | 用于创建给定名称的表,必须拥有表 CREATE 的权限。 |
| table_name | 创建表的名称,表名称必须符合标识符命名规则。 |
| column_name column_type | 指定数据表中每个列(字段)的名称和数据类型,如果创建多个列,需要用逗号隔开。 |
步骤七:完成新建表
单击 执行 ,完成新建表后,会在左侧导航栏的表列表中出现新建的 employee 表。
新建外表
本章节以创建存储服务 OSS 外部表 employee 为例,介绍如何在 SQL 窗口中创建外部表 employee 到数据库 odc_test 中,您可以将 OSS 上指定的文件路径映射到 ODC 数据库 odc_test 中。
准备外部文件。
在 OSS 管理控制台 上新建目录
external table。
上传文件
employee.csv到目录external table中。
获取外表
employee存放路径:https://ob*********.oss-cn-shanghai.aliyuncs.com/doc/img/odc/433/external%20table/employee.csv。
在 ODC SQL 窗口中,执行以下 SQL 命令创建外表
employee。
CREATE EXTERNAL TABLE `employee` ( `emp_no` int(120), `birthday` date, `name` varchar(120) ) LOCATION = 'ob*********.oss-cn-shanghai.aliyuncs.com/doc/img/odc/433/500.sql-development/700.database-objects/100.web-odc-table-objects/employee/employee.csv' FORMAT = ( TYPE = 'CSV' FIELD_DELIMITER = ',' FIELD_OPTIONALLY_ENCLOSED_BY ='"' ENCODING = 'utf8mb4' ) PATTERN = 'employee.csv';LOCATION选项用于指定外表文件存放的路径。本地 Location 格式:
LOCATION = '[file://] local_file_path'。对于使用本地Location格式的场景,需设置系统变量secure_file_priv配置可以访问的路径。更多信息,请参见 secure_file_priv。远程 Location 格式:
LOCATION = '{oss|cos|S3}://$ACCESS_ID:$ACCESS_KEY@$HOST/remote_file_path',$ACCESS_ID、$ACCESS_KEY和$HOST为访问阿里云 OSS、腾讯云 COS 和 S3 所需配置的访问信息。
FORMAT = ( TYPE = 'CSV'... )用于指定外部文件的格式为 CSV 类型。参数如下:TYPE:指定外部文件的类型。LINE_DELIMITER:指定 CSV 文件的行分隔符。默认值为LINE_DELIMITER='\n'。FIELD_DELIMITER:指定 CSV 文件的列分隔符。默认值为FIELD_DELIMITER='\t'。ESCAPE:指定 CSV 文件的转义符号,只能为 1 个字节。默认值为ESCAPE ='\'。FIELD_OPTIONALLY_ENCLOSED_BY:指定 CSV 文件中包裹字段值的符号。默认值为空。ENCODING:指定文件的字符集编码格式,当前 MySQL 模式支持的所有字符集请参见 字符集。如果不指定,默认值为 UTF8MB4。NULL_IF:指定被当作 NULL 处理的字符串。默认值为空。SKIP_HEADER:跳过文件头,并指定跳过的行数。SKIP_BLANK_LINES:指定是否跳过空白行。默认值为FALSE,表示不跳过空白的行。TRIM_SPACE:指定是否删除文件中字段的头部和尾部空格。默认值为FALSE,表示不删除文件中字段头尾的空格。EMPTY_FIELD_AS_NULL:指定是否将空字符串当作NULL处理。默认值为FALSE,表示不将空字符串当做NULL处理。
PATTERN选项用于指定一个正则模式串,用于过滤LOCATION目录下的文件。对于每个LOCATION目录下的文件路径,如果能够匹配该模式串,外表会访问这个文件,否则外表会跳过这个文件。如果不指定该参数,则默认可以访问LOCATION目录下的所有文件。外表会将LOCATION指定路径下满足PATTERN的文件列表保存在数据库系统表中,外表扫描时会根据这个列表来访问外部的文件。
在左侧导航栏的外表列表中查看 employee 表。
