新建表

本文档旨在介绍如何使用 ODC 创建表。

背景信息

OceanBase 开发者中心(OceanBase Developer Center,ODC)支持可视化方式创建表。

新建内部

image

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

  1. 指定基本信息。

  2. 设置列。

  3. 设置索引(可选)。

  4. 设置约束(可选)。

  5. 设置分区规则(可选)。

  6. 确认 SQL。

  7. 完成新建表。

新建外表

外表是指一个逻辑上的表对象,其对应的实际数据存储位置并不在数据库内部,而是存储于外部存储服务中。具体请参见 关于外表

ODC V4.3.3 及之后的版本支持在 SQL 窗口中执行 SQL 命令创建外部表,以通过指定的文件路径将外部文件映射到 ODC 数据库中,您可以从资源树列表中查看已创建的外部表。具体请参见 OceanBase 创建外表

ODC 支持使用 CREATE EXTERNAL TABLE 语句创建外表。

重要
  • 外表仅支持只读,可用于查询语句,但不能执行 DML 操作。

  • 通过本地文件在 ODC 中创建外表前,您需要设置 secure_file_priv 变量。该设置仅支持通过本地 Unix Socket 连接 OceanBase 数据库,ODC 目前不支持此类连接方式,您需要通过 OBClient 工具配置

  1. 准备外部文件。

  2. 在 ODC SQL 创建中执行 SQL 命令创建外表。

  3. 资源树中查看创建的外表。

操作步骤

新建内部

章节以创建表为例,介绍如何在 SQL 窗口中创建表 employee 到数据库 odc_test 中,员工表中包含员工工号(emp_no)、员工生日(birthday)、员工姓名(name)和员工性别(gender)。

说明

文中所使用的均为示例数据,您可根据实际情况对数据进行替换。

步骤一:指定基本信息

  1. 登录数据库并进入 SQL 开发窗口后,在左侧导航栏中单击 标签可查看表列表。在表列表的右上角,单击 + 以创建表对象。

  2. 基本信息 中,输入 表名称、选择 存储模式 和表的 描述

    image.png

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

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

步骤二:设置列

说明

ODC V4.2.3 及之后的版本支持创建包含OceanBase MySQL/MySQL空间数据类型(GIS)字段(列)的表。

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

image

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

功能项

说明

工具栏操作

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

单击行序号

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

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

鼠标右键操作

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

说明
  • MySQL 模式下,每个表仅允许设置一个自增字段(列)。

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

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

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

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

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

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

步骤三:设置索引

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

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

image

步骤四:设置约束

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

image

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

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

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

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

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

重要

OceanBase 暂不支持 SET NULL 动作。

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

步骤五:设置分区规则

image

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

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

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

步骤六:确认 SQL

image.png

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

语法格式如下:

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

参数说明:

参数

说明

CREATE TABLE

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

table_name

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

column_name column_type

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

步骤七:完成新建表

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

image.png

说明

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

image.png

新建外表

本章节以创建存储服务 OSS 外部表 employee 为例,介绍如何在 SQL 窗口中创建外部表 employee 到数据库 odc_test 中,您可以将 OSS 上指定的文件路径映射到 ODC 数据库 odc_test 中。

  1. 准备外部文件。

    1. 在 使用阿里云账号登录OSS管理控制台上新建目录 external table

      image

    2. 上传文件 employee.csv 到目录 external table 中。

      image

    3. 获取外表 employee 存放路径:https://ob*********.oss-cn-shanghai.aliyuncs.com/doc/img/odc/433/external%20table/employee.csv

      image

  2. 在 ODC SQL 窗口中,执行以下 SQL 命令创建外表 employee

    image

    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 的文件列表保存在数据库系统表中,外表扫描时会根据这个列表来访问外部的文件。

  3. 在左侧导航栏的外表列表中查看 employee 表。

    image

相关信息