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