全部產品
Search
文件中心

ApsaraDB for OceanBase (Deprecated):建立表

更新時間:Feb 25, 2025

本文檔旨在介紹如何使用 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 字元串當作 NULL 處理。預設值為 FALSE,表示不將Null 字元串當做 NULL 處理。

    • PATTERN 選項用於指定一個正則模式串,用於過濾 LOCATION 目錄下的檔案。對於每個 LOCATION 目錄下的檔案路徑,如果能夠匹配該模式串,外表會訪問這個檔案,否則外表會跳過這個檔案。如果不指定該參數,則預設可以訪問 LOCATION 目錄下的所有檔案。外表會將 LOCATION 指定路徑下滿足 PATTERN 的檔案清單儲存在資料庫系統資料表中,外表掃描時會根據這個列表來訪問外部的檔案。

  3. 在左側導覽列的外表列表中查看 employee 表。

    image

相關資訊