Cassandra-cql-user-defined-datatypes

提供:Dev Guides
移動先:案内検索

Cassandra-CQLユーザー定義データ型

CQLは、ユーザー定義のデータ型を作成および使用する機能を提供します。 複数のフィールドを処理するデータ型を作成できます。 この章では、ユーザー定義のデータ型を作成、変更、削除する方法について説明します。

ユーザー定義データ型の作成

コマンド CREATE TYPE は、ユーザー定義のデータ型を作成するために使用されます。 その構文は次のとおりです-

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

以下に、ユーザー定義のデータ型を作成する例を示します。 この例では、次の詳細を含む card_details データ型を作成しています。

Field Field name Data type
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:finddevguides> CREATE TYPE card_details (
   ... num int,
   ... pin int,
   ... name text,
   ... cvv int,
   ... phone set<int>
... );

注意-ユーザー定義のデータ型に使用される名前は、予約されている型名と一致してはなりません。

検証

*DESCRIBE* コマンドを使用して、作成されたタイプが作成されたかどうかを確認します。
CREATE TYPE finddevguides.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:finddevguides> ALTER TYPE card_details ADD email text;

検証

*DESCRIBE* コマンドを使用して、新しいフィールドが追加されているかどうかを確認します。
cqlsh:finddevguides> describe type card_details;
CREATE TYPE finddevguides.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   );

型のフィールドの名前を変更する

次の構文を使用して、既存のユーザー定義データ型の名前を変更します。

ALTER TYPE typename
RENAME existing_name TO new_name;

次のコードは、型のフィールドの名前を変更します。 ここでは、フィールドメールの名前をメールに変更しています。

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

検証

*DESCRIBE* コマンドを使用して、タイプ名が変更されたかどうかを確認します。
cqlsh:finddevguides> describe type card_details;
CREATE TYPE finddevguides.card_details (
   num int,
   pin int,
   name text,
   cvv int,
   phone set<int>,
   mail text
   );

ユーザー定義データ型の削除

*DROP TYPE* は、ユーザー定義のデータ型を削除するために使用されるコマンドです。 以下は、ユーザー定義のデータ型を削除する例です。

削除する前に、以下に示すように DESCRIBE_TYPES コマンドを使用して、すべてのユーザー定義データ型のリストを確認します。

cqlsh:finddevguides> DESCRIBE TYPES;
card_details card

2つのタイプから、以下に示すように card という名前のタイプを削除します。

cqlsh:finddevguides> drop type card;
*DESCRIBE* コマンドを使用して、データ型が削除されたかどうかを確認します。
cqlsh:finddevguides> describe types;

card_details