本文檔旨在介紹如何使用 ODC 建立表。
背景資訊
OceanBase 開發人員中心(OceanBase Developer Center,ODC)支援可視化方式建立表。
建立內部表

如上圖所示,建立表包含以下 7 個步驟:
指定基本資料。
設定列。
設定索引(可選)。
設定約束(可選)。
設定分區規則(可選)。
確認 SQL。
完成建立表。
建立外表
外表是指一個邏輯上的表對象,其對應的實際資料存放區位置並不在資料庫內部,而是儲存於外部儲存服務中。具體請參見 關於外表。
ODC V4.3.3 及之後的版本支援在 SQL 視窗中執行 SQL 命令建立外部表格,以通過指定的檔案路徑將外部檔案對應到 ODC 資料庫中,您可以從資源樹列表中查看已建立的外部表格。具體請參見 OceanBase 建立外表。
ODC 支援使用 CREATE EXTERNAL TABLE 語句建立外表。
外表僅支援唯讀,可用於查詢語句,但不能執行 DML 操作。
通過本地檔案在 ODC 中建立外表前,您需要設定
secure_file_priv變數。該設定僅支援通過本地 Unix Socket 串連 OceanBase 資料庫,ODC 目前不支援此類串連方式,您需要通過 OBClient 工具配置。
準備外部檔案。
在 ODC SQL 建立中執行 SQL 命令建立外表。
資源樹中查看建立的外表。
操作步驟
建立內部表
本章節以建立表為例,介紹如何在 SQL 視窗中建立表 employee 到資料庫 odc_test 中,員工表中包含員工工號(emp_no)、員工生日(birthday)、員工姓名(name)和員工性別(gender)。
文中所使用的均為樣本資料,您可根據實際情況對資料進行替換。
步驟一:指定基本資料
登入資料庫並進入 SQL 開發視窗後,在左側導覽列中單擊 表 標籤可查看錶列表。在表列表的右上方,單擊 + 以建立表對象。
在 基本資料 中,輸入 表名稱、選擇 儲存模式 和表的 描述。
說明在 MySQL 模式下,同時需要選擇預設字元集和預設定序。
完成指定基本資料並切換至設定列步驟後,表示確認提交基本資料。
步驟二:設定列
ODC V4.2.3 及之後的版本支援建立包含OceanBase MySQL/MySQL空間資料類型(GIS)欄位(列)的表。
如下圖所示,添加一列時需指定以下資訊:

設定列頁面提供 3 種功能操作:
功能項 | 說明 |
工具列操作 | 通過列頁面頂部的工具列可添加和刪除列。 |
單擊行序號 |
|
滑鼠右鍵操作 | 按右鍵滑鼠選中整行,進行複製行 / 向下移動一行。 |
MySQL 模式下,每個表僅允許設定一個自增欄位(列)。
當一個欄位(列)設定為自增後,其餘欄位(列)不可勾選,需取消勾選後,才可設定其它欄位(列)為自增欄位(列)。
如果已勾選虛擬列,則必須填寫運算式。
在建立虛擬列時需要定義虛擬列依賴的運算式,虛擬列包含 Virtual Column 和 Stored Column,僅在使用時會根據運算式計算出虛擬列的值,因此在向表中插入資料的時候,不能為虛擬列指定要插入的值。
複製行後,可選中某行並通過快速鍵 Command + V / Ctrl + V 進行粘貼。
頁面底部的輔助編輯地區會顯示所選中列的相關提示資訊。
基本資料和列為必填項,其它為選填項,填寫基本資料和列後,可以直接提交並確認 SQL 建立表。
步驟三:設定索引
當表中包含大量資料,可以使用索引更快速的查詢資料。索引是表中對某一列或多個列的值進行預排序的資料結構。通過使用索引,可以直接定位到合格記錄。
如下圖所示,需指定以下資訊:

步驟四:設定約束
約束用於規定表中的資料規則。如果存在違反約束的資料行為,該行為會被約束終止。

ODC 中支援設定的表級約束包括以下 4 種:
主鍵約束:定義一個主鍵來唯一標識表中的每一行資料。主鍵約束可為一個欄位或是一組欄位,一張表中只能設定一個主鍵約束,且設定完成後不支援編輯。
唯一約束:保證在一個欄位或者一組欄位裡的資料在表中是唯一的,一張表中可設定多個唯一約束。
外鍵約束:在兩個表的資料之間建立串連(可為一列或多列),旨在保持關聯表之間資料的一致性、完整性。設定完成後不支援新增和編輯。
檢查約束:在編輯資料庫資料時,按照設定的檢查規則進行校正,校正通過才允許資料修改操作。
OceanBase 暫不支援 SET NULL 動作。
相關文法,請參考OceanBase 或 MySQL/Oracle 官網文檔。
步驟五:設定分區規則

當表中包含大量資料時,可以對錶進行分區。表進行分區後,表中的資料會存放到多個資料表空間,每次查詢資料時不會掃描整張表。
OceanBase 中 MySQL 模式支援六種分區方法:key、Hash、Range、Range Columns、List 和 List Columns。
Oracle 模式支援三種分區方法:List、Range 和 Hash。
步驟六:確認 SQL

單擊 提交 後,在 SQL 確認頁面查看語句,支援 SQL 檢查 和 格式化 語句以方便查看。
文法格式如下:
CREATE TABLE table_name (column_name column_type, column_name column_type,.......);
參數說明:
參數 | 說明 |
CREATE TABLE | 用於建立給定名稱的表,必須擁有表 CREATE 的許可權。 |
table_name | 建立表的名稱,表名稱必須符合標識符命名規則。 |
column_name column_type | 指定資料表中每個列(欄位)的名稱和資料類型,如果建立多個列,需要用逗號隔開。 |
步驟七:完成建立表
單擊 執行,完成建立表後,會在左側導覽列的表列表中出現建立的 employee 表。

在左側導覽列的表列表中,單擊表名右側的更多表徵圖,通過彈出的管理巨集指令清單(包括 查看錶結構、查看錶資料、匯入、匯出、下載、類比資料、開啟 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`;

建立外表
本章節以建立儲存服務 OSS 外部表格 employee 為例,介紹如何在 SQL 視窗中建立外部表格 employee 到資料庫 odc_test 中,您可以將 OSS 上指定的檔案路徑映射到 ODC 資料庫 odc_test 中。
準備外部檔案。
在 使用阿里雲帳號登入OSS管理主控台上建立目錄
external table。
上傳檔案
employee.csv到目錄external table中。
擷取外表
employee存放路徑:https://ob*********.oss-cn-shanghai.aliyuncs.com/doc/img/odc/433/external%20table/employee.csv。
在 ODC SQL 視窗中,執行以下 SQL 命令建立外表
employee。
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的檔案清單儲存在資料庫系統資料表中,外表掃描時會根據這個列表來訪問外部的檔案。
在左側導覽列的外表列表中查看 employee 表。
