Cassandra - CQL 使用者自定義資料型別


CQL 提供了建立和使用使用者自定義資料型別的功能。您可以建立一個數據型別來處理多個欄位。本章解釋如何建立、修改和刪除使用者自定義資料型別。

建立使用者自定義資料型別

命令 `CREATE TYPE` 用於建立使用者自定義資料型別。其語法如下:

CREATE TYPE <keyspace name>. <data typename>
( variable1, variable2).

示例

下面是一個建立使用者自定義資料型別的示例。在這個例子中,我們正在建立一個包含以下詳細資訊的 `card_details` 資料型別。

欄位 欄位名稱 資料型別
信用卡號 num int
信用卡密碼 pin int
信用卡持卡人姓名 name text
cvv cvv int
持卡人聯絡方式 phone set
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

**注意** - 使用者自定義資料型別使用的名稱不應與保留型別名稱衝突。

驗證

使用 `DESCRIBE` 命令驗證是否已建立該型別。

CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>
   );

修改使用者自定義資料型別

`ALTER TYPE` 命令用於修改現有資料型別。使用 ALTER,您可以新增新欄位或重新命名現有欄位。

向型別新增欄位

使用以下語法向現有使用者自定義資料型別新增新欄位。

ALTER TYPE typename
ADD field_name field_type; 

以下程式碼向 `Card_details` 資料型別新增一個新欄位。這裡我們新增一個名為 email 的新欄位。

cqlsh:tutorialspoint> ALTER TYPE card_details ADD email text;

驗證

使用 `DESCRIBE` 命令驗證是否已新增新欄位。

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

重新命名型別中的欄位

使用以下語法重新命名現有使用者自定義資料型別。

ALTER TYPE typename
RENAME existing_name TO new_name;

以下程式碼更改型別中欄位的名稱。這裡我們將欄位 email 重新命名為 mail。

cqlsh:tutorialspoint> ALTER TYPE card_details RENAME email TO mail;

驗證

使用 `DESCRIBE` 命令驗證型別名稱是否已更改。

cqlsh:tutorialspoint> describe type card_details;
CREATE TYPE tutorialspoint.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
   );

刪除使用者自定義資料型別

`DROP TYPE` 是用於刪除使用者自定義資料型別的命令。下面是一個刪除使用者自定義資料型別的示例。

示例

在刪除之前,使用 `DESCRIBE_TYPES` 命令驗證所有使用者自定義資料型別的列表,如下所示。

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

從這兩種型別中,刪除名為 `card` 的型別,如下所示。

cqlsh:tutorialspoint> drop type card;

使用 `DESCRIBE` 命令驗證資料型別是否已刪除。

cqlsh:tutorialspoint> describe types;

card_details
廣告