

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Tipos definidos por el usuario () UDTs
<a name="cql.ddl.type"></a>

*UDT*: agrupación de campos y tipos de datos que puede utilizar para definir una sola columna en Amazon Keyspaces. Los tipos de datos válidos UDTs son todos los tipos de datos de Cassandra compatibles, incluidas las colecciones y otros UDTs que ya haya creado en el mismo espacio de claves. Para obtener más información sobre los tipos de datos de Cassandra compatibles, consulte. [Compatibilidad con tipos de datos de 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>

Utilice la `CREATE TYPE` sentencia para crear un tipo nuevo.

 **Sintaxis**

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

Donde:
+ `IF NOT EXISTS``CREATE TYPE`evita que se produzca un error si el tipo ya existe. (Opcional)
+ `udt_name`es el nombre completo de la UDT en formato tipográfico, por ejemplo. `my_keyspace.my_type` Si define el espacio de claves actual con la `USE` instrucción, no necesita especificar el nombre del espacio de claves.
+ `field_definition`consta de un nombre y un tipo.

En la siguiente tabla se muestran ejemplos de nombres UDT permitidos. La primera columna muestra cómo introducir el nombre al crear el tipo, y la segunda columna muestra cómo Amazon Keyspaces formatea el nombre internamente. Amazon Keyspaces espera el nombre formateado para operaciones como. `GetType`


| Nombre introducido | Nombre formateado | Nota | 
| --- | --- | --- | 
|  MY\$1UDT  | my\$1udt | Sin comillas dobles, Amazon Keyspaces convierte todos los caracteres en mayúsculas en minúsculas. | 
|  "MY\$1UDT"  | MY\$1UDT | Con las comillas dobles, Amazon Keyspaces respeta los caracteres en mayúscula y elimina las comillas dobles del nombre formateado. | 
|  "1234"  | 1234 | Con comillas dobles, el nombre puede empezar por un número y Amazon Keyspaces elimina las comillas dobles del nombre formateado. | 
|  "Special\$1Ch@r@cters<>\$1\$1"  | Special\$1Ch@r@cters<>\$1\$1 | Con comillas dobles, el nombre puede contener caracteres especiales y Amazon Keyspaces elimina las comillas dobles del nombre formateado. | 
|  "nested""""""quotes"  | nested"""quotes | Amazon Keyspaces elimina las comillas dobles exteriores y las comillas dobles de escape del nombre formateado. | 

**Ejemplos**

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

Puede anidar UDTs si la UDT anidada está inmovilizada. Para obtener más información sobre los valores predeterminados y las cuotas de los tipos, consulte. [Cuotas de UDT y valores predeterminados de Amazon Keyspaces](quotas.md#udt-table)

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

Para ver más ejemplos de código que muestran cómo crear UDTs, consulte[Tipos definidos por el usuario (UDTs) en Amazon Keyspaces](udts.md).

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

Utilice la `DROP TYPE` sentencia para eliminar una UDT. Solo puede eliminar un tipo que no esté siendo utilizado por otro tipo o tabla.

 **Sintaxis**

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

Donde:
+ `IF EXISTS``DROP TYPE`evita que se produzca un error si el tipo no existe. (Opcional)
+ `udt_name`es el nombre completo de la UDT en formato tipográfico, por ejemplo. `my_keyspace.my_type` Si define el espacio de claves actual con la `USE` instrucción, no necesita especificar el nombre del espacio de claves.

**Ejemplo**

```
DROP TYPE udt_name;
```