首批通过分布式安全可靠测评,为关键业务系统打造
新建表
更新时间:2023-02-28 18:03:26
概述
OceanBase 开发者中心(OceanBase Developer Center,ODC)支持可视化方式创建表。本文介绍如何使用 ODC 创建表。

如上图所示,创建表包含以下 7 个步骤:
指定基本信息。
设置列。
设置索引。
设置约束。
设置分区规则。
确认 SQL。
完成新建表。
操作步骤
以在 ODC 中创建员工表(employee)为例,员工表中包含员工工号(emp_no)、员工生日(birthdate)、员工姓名(name)和员工性别(gender)。具体操作步骤如下:
步骤 1:指定基本信息
在 OceanBase 开发者中心(OceanBase Developer Center,ODC)单击连接名进入连接后,在左侧导航栏中单击 表 标签可查看表列表。在表列表的右上角,单击 + 创建表,或在顶部导航栏中单击 新建 以创建所需对象。
在 基本信息 中,输入 表名称 和表的 描述 。

说明
- 在 MySQL 模式下,同时需要选择默认字符集和默认排序规则。
- 完成指定基本信息并切换至设置列步骤后,表示确认提交基本信息。
步骤 2:设置列
如下图所示,添加一列时需指定以下信息:

| 信息项 | 说明 |
|---|---|
| 名称 | 指定字段(列)的名称。 |
| 类型 | 指定字段(列)的数据类型。 具体数据类型,请参考 OceanBase 数据库的开发指南。 |
| 长度 | 指定类型长度。 |
| 小数点 | 设置类型精度。 |
| 非空 | 是否限制该字段(列)的值不能为空。 |
| 自增(MySQL 模式下) | 选择是否为自增列。 注意 每个表仅允许设置一个自增字段(列)。 当一个字段(列)设置为自增后,其余字段(列)不可勾选,需取消勾选后,才可设置其它字段(列)为自增字段(列)。 |
| 虚拟列 | 选择是否创建虚拟列。 注意 如果已勾选虚拟列,则 必须 填写表达式。 在创建虚拟列时需要定义虚拟列依赖的表达式,虚拟列包含 Virtual Column 和 Stored Column,仅在使用时会根据表达式计算出虚拟列的值,因此在向表中插入数据的时候,不能为虚拟列指定要插入的值。 |
| 缺省值/表达式 | 该字段(列)的默认值/表达式。 |
| 注释 | 对该字段(列)的说明。 |
设置列页面提供 3 种功能操作:
| 功能项 | 说明 |
|---|---|
| 工具栏操作 | 通过列页面顶部的工具栏可添加和删除列。 |
| 单击行序号 | - 单击行序号,选中整行,显示辅助菜单(新建、删除)。 - 单击并选中行序号,可拖动整行参数以调整顺序。 |
| 鼠标右键操作 | 右键单击鼠标选中整行,进行复制行 / 向下移动一行。 |
说明
- 复制行后,可选中某行并通过快捷键 Command + V / Ctrl + V 对进行粘贴。
- 页面底部的辅助编辑区域会显示所选中列的相关提示信息。
- 基本信息和列为必填项,其它为选填项,填写基本信息和列后,可以直接提交并确认 SQL 新建表。
步骤 3:设置索引
当表中包含大量数据,可以使用索引更快速的查询数据。索引是表中对某一列或多个列的值进行预排序的数据结构。通过使用索引,可以直接定位到符合条件的记录。
如下图所示,需指定以下信息:

| 信息项 | 说明 |
|---|---|
| 索引名称 | 为该索引指定的名称。 |
| 范围 | 默认值为 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:设置约束
约束用于规定表中的数据规则。如果存在违反约束的数据行为,该行为会被约束终止。

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或 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或 MySQL/Oracle 官网文档。 |
| 检查条件 | 指定执行 检查约束 时校验数据的检查规则。 |
设置约束页面提供以下功能键:
| 功能项 | 说明 |
|---|---|
| +新建 | 添加一个新约束。 |
| 删除 | 删除当前选中的约束。 |
步骤 5:设置分区规则

当表中包含大量数据时,可以对表进行分区。表进行分区后,表中的数据会存放到多个表空间,每次查询数据时不会扫描整张表。
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 数据库分区表。字段 选择作为分区键的字段。 表达式 根据表达式的返回值进行分区(Oracle 模式下不支持分区表达式)。 分区 根据所选的 分区方法 ,可能需要指定 分区名称 、 分区数量 、 区间上限值 或 值枚举 等信息。 可添加多个分区,并拖动已选字段进行排序。
步骤 6:确认 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 表。

说明
在左侧导航栏中,右键鼠标单击表列表中的表名,通过弹出的管理操作列表(包括 查看表结构 、 查看 DDL 、 查看表数据 、 新建表 、 导入 、 导出 、 下载 、 模拟数据 、 打开 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`;
