Cassandra - CQL 用户定义数据类型

CQL 提供了创建和使用用户定义数据类型的功能。您可以创建一个数据类型来处理多个字段。本章介绍如何创建、更改和删除用户定义数据类型。

创建用户定义数据类型

命令 CREATE TYPE 用于创建用户定义数据类型。其语法如下 −

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

示例

下面给出了创建用户定义数据类型的示例。在此示例中,我们创建了一个包含以下详细信息的 card_details 数据类型。

字段 字段名称 数据类型
credit card no num int
credit card pin pin int
name on credit card name text
cvv cvv int
Contact details of card holder 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 established_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