

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tipos definidos pelo usuário () UDTs
<a name="cql.ddl.type"></a>

*UDT* — Um agrupamento de campos e tipos de dados que você pode usar para definir uma única coluna no Amazon Keyspaces. Todos os tipos de dados válidos do Cassandra UDTs são compatíveis com os tipos de dados do Cassandra, incluindo coleções e outros UDTs que você já criou no mesmo keyspace. Para obter mais informações sobre os tipos de dados do Cassandra compatíveis, consulte. [Suporte ao tipo de dados do 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>

Use a `CREATE TYPE` instrução para criar um novo tipo.

 **Sintaxe**

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

Em que:
+ `IF NOT EXISTS``CREATE TYPE`evita que falhe se o tipo já existir. (Optional)
+ `udt_name`é o nome totalmente qualificado do UDT em formato de tipo, por exemplo. `my_keyspace.my_type` Se você definir o espaço de teclas atual com a `USE` instrução, não precisará especificar o nome do espaço de teclas.
+ `field_definition`consiste em um nome e um tipo.

A tabela a seguir mostra exemplos de nomes de UDT permitidos. A primeira coluna mostra como inserir o nome ao criar o tipo, a segunda coluna mostra como o Amazon Keyspaces formata o nome internamente. O Amazon Keyspaces espera o nome formatado para operações como. `GetType`


| Nome inserido | Nome formatado | Observação | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Sem aspas duplas, o Amazon Keyspaces converte todos os caracteres maiúsculos em minúsculas. | 
|  "MY\$1UDT"  | MY\$1UDT | Com aspas duplas, o Amazon Keyspaces respeita os caracteres maiúsculos e remove as aspas duplas do nome formatado. | 
|  "1234"  | 1234 | Com aspas duplas, o nome pode começar com um número, e o Amazon Keyspaces remove as aspas duplas do nome formatado. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Com aspas duplas, o nome pode conter caracteres especiais, e o Amazon Keyspaces remove as aspas duplas do nome formatado. | 
|  "nested""""""quotes"  | nested"""quotes | O Amazon Keyspaces remove as aspas duplas externas e as aspas duplas de escape do nome formatado. | 

**Exemplos**

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

Você pode aninhar UDTs se o UDT aninhado estiver congelado. Para obter mais informações sobre valores padrão e cotas para tipos, consulte[Cotas de UDT e valores padrão do Amazon Keyspaces](quotas.md#udt-table).

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

Para obter mais exemplos de código que mostram como criar UDTs, consulte[Tipos definidos pelo usuário (UDTs) no Amazon Keyspaces](udts.md).

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

Use a `DROP TYPE` instrução para excluir um UDT. Você só pode excluir um tipo que não esteja sendo usado por outro tipo ou tabela.

 **Sintaxe**

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

Em que:
+ `IF EXISTS``DROP TYPE`evita que falhe se o tipo não existir. (Optional)
+ `udt_name`é o nome totalmente qualificado do UDT em formato de tipo, por exemplo. `my_keyspace.my_type` Se você definir o espaço de teclas atual com a `USE` instrução, não precisará especificar o nome do espaço de teclas.

**Exemplo**

```
DROP TYPE udt_name;
```