Cassandra CQL用戶定義的數(shù)據(jù)類型

2018-12-21 13:55 更新

CQL提供了創(chuàng)建和使用用戶定義的數(shù)據(jù)類型的功能。您可以創(chuàng)建一個數(shù)據(jù)類型來處理多個字段。本章介紹如何創(chuàng)建,更改和刪除用戶定義的數(shù)據(jù)類型。

創(chuàng)建用戶定義的數(shù)據(jù)類型

命令CREATE TYPE用于創(chuàng)建用戶定義的數(shù)據(jù)類型。其語法如下:

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

示例

下面給出了創(chuàng)建用戶定義數(shù)據(jù)類型的示例。在此示例中,我們正在創(chuàng)建一個包含以下詳細(xì)信息的card_details數(shù)據(jù)類型。

字段字段名稱數(shù)據(jù)類型
credit card nonumint
credit card pinpinint
name on credit cardnametext
cvvcvvint
Contact details of card holderphoneset
cqlsh:tutorialspoint> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

注:用于用戶定義數(shù)據(jù)類型的名稱不應(yīng)與保留類型名稱一致。

驗證

使用DESCRIBE命令驗證是否已創(chuàng)建創(chuàng)建的類型。

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

更改用戶定義的數(shù)據(jù)類型

ALTER TYPE命令用于更改現(xiàn)有數(shù)據(jù)類型。使用ALTER,您可以添加新字段或重命名現(xiàn)有字段。

將字段添加到類型

使用以下語法向現(xiàn)有用戶定義的數(shù)據(jù)類型添加新字段。

ALTER TYPE typename
ADD field_name field_type; 

以下代碼向Card_details數(shù)據(jù)類型添加了一個新字段。這里我們添加一個名為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>,
   );

在類型中重命名字段

使用以下語法重命名現(xiàn)有的用戶定義數(shù)據(jù)類型。

ALTER TYPE typename
RENAME existing_name TO new_name;

以下代碼更改類型中字段的名稱。這里我們將字段電子郵件重命名為郵件。

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
   );

刪除用戶定義的數(shù)據(jù)類型

DROP TYPE是用于刪除用戶定義的數(shù)據(jù)類型的命令。下面給出了一個刪除用戶定義數(shù)據(jù)類型的示例。

示例

在刪除之前,使用DESCRIBE_TYPES命令驗證所有用戶定義的數(shù)據(jù)類型的列表,如下所示。

cqlsh:tutorialspoint> DESCRIBE TYPES;
card_details card

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

cqlsh:tutorialspoint> drop type card;

使用DESCRIBE命令驗證數(shù)據(jù)類型是否丟失。

cqlsh:tutorialspoint> describe types;

card_details

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號