新建表

概述

表是数据库中的一种数据结构,由行和列组成,用于保存数据。

新建表

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

  1. 指定基本信息

  2. 设置列

  3. 设置分区规则

  4. 设置索引

  5. 设置约束

  6. 确认 SQL

  7. 完成新建表

操作步骤

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

步骤 1:指定基本信息

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

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

说明

在 MySQL 模式下,同时需要选择 默认字符集 默认排序规则

新建表-步骤一

步骤 2:设置列

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

image

信息项

说明

字段名称

指定字段(列)的名称。

数据类型

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

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

非空

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

自增(MySQL 模式下)

选择是否为自增列。

缺省值

该字段(列)的默认值。

字段注释

对该字段(列)的说明。

设置列页面同时提供三个功能键:

功能项

说明

+新建

添加一个新字段。

编辑

对选定的字段进行编辑或直接双击单元格进行编辑。

删除

删除当前选中的字段。

步骤 3:设置分区规则

image

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

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

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

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

    信息项

    说明

    分区方法

    指定分区方法。

    MySQL 模式和 Oracle 模式下支持的分区方法不同。

    • Range 分区:基于属于一个给定连续区间的列值,将多行分配给分区。范围必须是有序的、连续的和不重叠的。

    • List 分区:基于数据的枚举值进行分区。

    • Hash 分区:基于给定的分区个数进行分区。对于分布规则不明显的数据,并没有明显的范围查找等特征,可以使用HASH分区,将数据分区列的值按照HASH算法打散到不同的分区上,将数据随机分布到各个分区。

    • Key 分区:类似于按 HASH 分区,区别在于 KEY 分区只支持计算一列或多列,且 MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。

      有关分区方法,请参见 OceanBase 数据库分区表

    字段

    选择作为分区键的字段。

    表达式

    根据表达式的返回值进行分区(Oracle 模式下不支持分区表达式)。

    分区

    根据所选的 分区方法,可能需要指定 分区名称分区数量区间上限值 值枚举 等信息。

    可添加多个分区,并拖动已选字段进行排序。

步骤 4:设置索引

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

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

image

信息项

说明

索引名

为该索引指定的名称。

索引范围

默认值为 GLOBAL(全局索引),仅在配置分区后方可指定索引范围是否为 LOCAL(局部索引)。

索引类型

索引类型目前只支持 BTree。

可选字段

选择索引所在的列,需注意索引列的顺序。

唯一

是否为唯一索引,即通过索引的方式保证唯一性约束。

设置索引页面同时提供三个功能键:

功能项

说明

+新建

添加一个新索引。

编辑

对选定的索引进行编辑或直接双击单元格进行编辑。

删除

删除当前选中的索引。

步骤 5:设置约束

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

image

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

  • 主键约束:定义一个主键来唯一标识表中的每一行数据。主键约束可为一个字段或是一组字段,一张表中只能设置一个主键约束,且设置完成后不支持编辑。
  • 唯一约束:保证在一个字段或者一组字段里的数据在表中是唯一的,一张表中可设置多个唯一约束。
  • 外键约束:在两个表的数据之间建立连接(可为一列或多列),旨在保持关联表之间数据的一致性、完整性。设置完成后不支持新增和编辑。
  • 检查约束:在编辑数据库数据时,按照设置的检查规则进行校验,校验通过才允许数据修改操作(仅在 Oracle 模式下支持 检查约束)。
由于 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 官网文档。

检查条件

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

设置约束页面同时提供三个功能键:

功能项

说明

+新建

添加一个新约束。

编辑

对选定的约束进行编辑或直接双击单元格进行编辑。

删除

删除当前选中的约束。

步骤 6:确认 SQL

新建表-步骤六

单击 提交 后,在 SQL 确认页面编辑语句。

用户可以在 SQL 创建确认页面编辑创建的语句。语法格式如下:

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

参数说明:

参数

说明

CREATE TABLE

用于创建给定名称的表,必须拥有表 CREATE 的权限。

表名称

创建表的名称,表名称必须符合标识符命名规则。

列名称 数据类型

指定数据表中每个列(字段)的名称和数据类型,如果创建多个列,需要用逗号隔开。

步骤 7:完成新建表

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

新建表-步骤七-1
说明

在左侧导航栏中,右键鼠标单击表列表中的表名,通过弹出的管理操作列表(包括 查看新建单表导入单表导出下载模拟数据打开 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 相关技术圈