

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザー定義タイプ (UDTs)
<a name="cql.ddl.type"></a>

*UDT* – Amazon Keyspaces で 1 つの列を定義するために使用できるフィールドとデータ型のグループ化。UDTs の有効なデータ型は、同じキースペースで既に作成したコレクションやその他の UDTs を含む、サポートされているすべての Cassandra データ型です。サポートされている Cassandra データ型の詳細については、「」を参照してください[Cassandra データ型サポート](cassandra-apis.md#cassandra-data-type)。

```
user_defined_type::= udt_name
udt_name::= [ keyspace_name '.' ] identifier
```

**Topics**
+ [CREATE TYPE](#cql.ddl.type.create)
+ [DROP TYPE](#cql.ddl.type.drop)

## CREATE TYPE
<a name="cql.ddl.type.create"></a>

`CREATE TYPE` ステートメントを使用して新しいタイプを作成します。

 **[Syntax]** (構文)

```
create_type_statement ::=  CREATE TYPE [ IF NOT EXISTS ] udt_name
    '('field_definition ( ',' field_definition)* ')'
            field_definition::= identifier cql_type
```

Where:
+ `IF NOT EXISTS` タイプが既に存在する場合、 は失敗`CREATE TYPE`しません。(オプション)
+ `udt_name` は、タイプ形式の UDT の完全修飾名です`my_keyspace.my_type`。例: 。`USE` ステートメントで現在のキースペースを定義する場合、キースペース名を指定する必要はありません。
+ `field_definition` は名前とタイプで構成されます。

次の表は、許可された UDT 名の例を示しています。最初の列はタイプの作成時に名前を入力する方法を示し、2 番目の列は Amazon Keyspaces が内部で名前をフォーマットする方法を示しています。Amazon Keyspaces では、 のようなオペレーションにフォーマットされた名前が必要です`GetType`。


| 入力した名前 | フォーマットされた名前 | メモ | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | 二重引用符を使用しない場合、Amazon Keyspaces はすべての大文字を小文字に変換します。 | 
|  "MY\$1UDT"  | MY\$1UDT | 二重引用符を使用すると、Amazon Keyspaces は大文字を尊重し、フォーマットされた名前から二重引用符を削除します。 | 
|  "1234"  | 1234 | 二重引用符を使用すると、名前は数字で始まることができ、Amazon Keyspaces はフォーマットされた名前から二重引用符を削除します。 | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | 二重引用符では、名前に特殊文字を含めることができ、Amazon Keyspaces はフォーマットされた名前から二重引用符を削除します。 | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces は、フォーマットされた名前から外部二重引用符とエスケープ二重引用符を削除します。 | 

**例**

```
CREATE TYPE my_keyspace.phone (
    country_code int,
    number text
);
```

ネストされた UDTs がフリーズしている場合は、UDT をネストできます。タイプのデフォルト値とクォータの詳細については、「」を参照してください[Amazon Keyspaces UDT クォータとデフォルト値](quotas.md#udt-table)。

```
CREATE TYPE my_keyspace.user (
    first_name text,
    last_name text,
    phones FROZEN<phone>
);
```

UDTs「」を参照してください[Amazon Keyspaces でのユーザー定義型 (UDT)](udts.md)。

## DROP TYPE
<a name="cql.ddl.type.drop"></a>

`DROP TYPE` ステートメントを使用して UDT を削除します。削除できるのは、別のタイプまたはテーブルで使用されていないタイプのみです。

 **[Syntax]** (構文)

```
drop_type_statement ::=  DROP TYPE [ IF EXISTS ] udt_name
```

Where:
+ `IF EXISTS` タイプが存在しない場合、 は失敗`DROP TYPE`しません。(オプション)
+ `udt_name` は、タイプ形式の UDT の完全修飾名です`my_keyspace.my_type`。例: 。`USE` ステートメントで現在のキースペースを定義する場合、キースペース名を指定する必要はありません。

**例**

```
DROP TYPE udt_name;
```