新建表

概述

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

新建表

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

  1. 指定基本信息

  2. 设置列

  3. 设置索引

  4. 设置约束

  5. 设置分区规则

  6. 确认 SQL

  7. 完成新建表

操作步骤

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

步骤 1:指定基本信息

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

基本信息 中,输入 表名称 和表的 描述

新建表-步骤1
说明
  • 在 MySQL 模式下,同时需要选择 默认字符集 默认排序规则

  • 完成指定基本信息并切换至设置列步骤后,表示确认提交基本信息。

步骤 2:设置列

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

image

信息项

说明

名称

指定字段(列)的名称。

类型

指定字段(列)的数据类型。

具体数据类型,请参考 OceanBase 数据库的开发指南

长度

指定类型长度。

小数点

设置类型精度。

非空

是否限制该字段(列)的值不能为空。

自增(MySQL 模式下)

选择是否为自增列。

重要

每个表仅允许设置一个自增字段(列)。

当一个字段(列)设置为自增后,其余字段(列)不可勾选,需取消勾选后,才可设置其它字段(列)为自增字段(列)。

虚拟列

选择是否创建虚拟列。

重要

如果已勾选虚拟列,则必须填写表达式。

在创建虚拟列时需要定义虚拟列依赖的表达式,虚拟列包含Virtual Column 和 Stored Column,仅在使用时会根据表达式计算出虚拟列的值,因此在向表中插入数据的时候,不能为虚拟列指定要插入的值。

缺省值/表达式

该字段(列)的默认值/表达式。

注释

对该字段(列)的说明。

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

功能项

说明

工具栏操作

通过列页面顶部的工具栏可添加和删除列。

单击行序号

  • 单击行序号,选中整行,显示辅助菜单(新建、删除)。

  • 单击并选中行序号,可拖动整行参数以调整顺序。

鼠标右键操作

右键单击鼠标选中整行,进行复制行 / 向下移动一行。

说明
  • 复制行后,可选中某行并通过快捷键 Command + V / Ctrl + V 对进行粘贴。

  • 页面底部的辅助编辑区域会显示所选中列的相关提示信息。

  • 基本信息和列为必填项,其它为选填项,填写 基本信息 后,可以直接 提交并确认 SQL 新建表。

步骤 3:设置索引

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

如下图所示,需指定以下信息:

image

信息项

说明

索引名称

为该索引指定的名称。

范围

默认值为 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:设置约束

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

image

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

  • 主键约束:定义一个主键来唯一标识表中的每一行数据。主键约束可为一个字段或是一组字段,一张表中只能设置一个主键约束,且设置完成后不支持编辑。

  • 唯一约束:保证在一个字段或者一组字段里的数据在表中是唯一的,一张表中可设置多个唯一约束。

  • 外键约束:在两个表的数据之间建立连接(可为一列或多列),旨在保持关联表之间数据的一致性、完整性。设置完成后不支持新增和编辑。

  • 检查约束:在编辑数据库数据时,按照设置的检查规则进行校验,校验通过才允许数据修改操作。

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

信息项

说明

约束名称

指定约束的名称。

列信息

选择一个字段或者一组字段作为约束。

关联 Schema(Oracle 模式下)

使用 外键约束 时需指定关联表(父表)所在的 Schema。

关联数据库(MySQL 模式下)

使用 外键约束 时需指定关联表(父表)所在的数据库。

关联表

使用 外键约束 时需指定关联表(父表)。

关联字段

使用 外键约束 时需指定关联字段(父表)。

删除

指定删除关联表(父表)中的数据时,当前表(子表)对应的动作。

可指定 CASCADENO ACTIONRESTRICTSET NULL 等四种对应的动作。

MySQL 和 Oracle 模式下所支持的外键动作不同:

  • MySQL 模式下,OceanBase 可指定 CASCADE、NO ACTION、RESTRICT 和 SET NULL;

  • Oracle 模式下,OceanBase 可指定 CASCADE、NO ACTION 和 SET NULL。

    重要

    OceanBase 暂不支持 SET NULL 动作。

    相关语法,请参考 OceanBase或 MySQL/Oracle 官网文档。

更新

指定更新关联表(父表)中的数据时,当前表(子表)对应的动作。

可指定 CASCADENO ACTIONRESTRICTSET NULL 等四种对应的动作。

MySQL 和 Oracle 模式下所支持的外键动作不同:

  • MySQL 模式下,OceanBase 可指定 CASCADE、NO ACTION、RESTRICT 和 SET NULL;

  • Oracle 模式下,OceanBase 可指定 NO ACTION。

    重要

    OceanBase 暂不支持 SET NULL 动作。

    相关语法,请参考 OceanBase或 MySQL/Oracle 官网文档。

检查条件

指定执行 检查约束 时校验数据的检查规则。

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

功能项

说明

+新建

添加一个新约束。

删除

删除当前选中的约束。

步骤 5:设置分区规则

image

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

  • OceanBase 中 MySQL 模式支持六种分区方法:keyHashRangeRange ColumnsListList Columns

  • Oracle 模式支持三种分区方法:ListRangeHash

    由于在 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 表。

新建表-步骤七-1
说明

在左侧导航栏中,右键鼠标单击表列表中的表名,通过弹出的管理操作列表(包括 查看表结构查看 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`;
新建表-步骤七

相关信息

阿里云首页 云数据库 OceanBase 相关技术圈