Todos los productos
Search
Centro de documentos

:Tipos de datos básicos

Última actualización: Sep 04, 2026

AnalyticDB for MySQL admite un conjunto fundamental de tipos de datos SQL en las categorías numérica, de cadena, de tiempo y espacial. Esta página describe el tamaño de almacenamiento, el rango de valores y las diferencias respecto a MySQL estándar para cada tipo, además de las reglas de conversión implícita de tipos.

Tipos de datos compatibles

Tipos numéricos

Tipo Alias Rango de valores Tamaño Notas
BOOLEAN — 0 (falso), 1 (verdadero) 1 bit Sin diferencias respecto a MySQL.
TINYINT — -128 a 127 1 byte Sin diferencias respecto a MySQL.
SMALLINT — -32768 a 32767 2 bytes Sin diferencias respecto a MySQL.
INT o INTEGER — -2147483648 a 2147483647 4 bytes Corresponde a INT o MEDIUMINT de MySQL.
BIGINT — -9223372036854775808 a 9223372036854775807 8 bytes Sin diferencias respecto a MySQL.
FLOAT — -3.402823466E+38 a -1.175494351E-38, 0, 1.175494351E-38 a 3.402823466E+38 4 bytes Cumple con el estándar IEEE. Sin diferencias respecto a MySQL.
DOUBLE — -1.7976931348623157E+308 a -2.2250738585072014E-308, 0, 2.2250738585072014E-308 a 1.7976931348623157E+308 8 bytes Cumple con el estándar IEEE. Sin diferencias respecto a MySQL.
DECIMAL(m,d) o NUMERIC — m: precisión máxima 1–38; d: escala decimal, debe ser ≤ m —

MySQL admite una precisión máxima de 65; AnalyticDB for MySQL admite hasta 38. Si la precisión DECIMAL supera 38, la instrucción CREATE TABLE falla y devuelve el código de error 5030 con el mensaje decimal precision must be less than or equal to 38. En versiones anteriores, la precisión máxima predeterminada era 1000, pero se redujo a 38 en la versión actual. Si su carga de trabajo requiere una precisión mayor a 38, utilice uno de los siguientes métodos:

  • Reduzca la precisión: establezca la precisión DECIMAL en 38 o menos.

  • Aumente el límite en el backend: contacte al soporte técnico de Alibaba Cloud para configurar el parámetro DECIMAL_MAX_PRECISION en 1000 y luego reinicie el clúster para que el cambio surta efecto. Este es un parámetro de backend que no se puede modificar en la configuración del clúster desde la consola ni mediante una llamada a una operación de API.

Tipos de cadena

Tipo

Descripción

Equivalente en MySQL

VARCHAR

Hasta 16 MB. Se acepta un especificador de longitud como VARCHAR(255) por compatibilidad sintáctica; el máximo real lo determina el tamaño de los datos (hasta 16 MB), no el número declarado. No confíe en la longitud declarada para la validación.

CHAR, VARCHAR, TEXT, MEDIUMTEXT o LONGTEXT

BINARY

Longitud de los caracteres de almacenamiento.

BINARY, VARBINARY o BLOB

Tipos de tiempo

Tipo

Rango de valores

Formato

Tamaño

Notas

DATE

De '0001-01-01' a '9999-12-31'

YYYY-MM-DD

4 bytes

MySQL admite 0000-00-00; AnalyticDB for MySQL valida los valores de tiempo y convierte 0000-00-00 a NULL. Utilice fechas reales.

TIME

De '00:00:00' a '23:59:59'

HH:MM:SS

8 bytes

MySQL admite precisión personalizada; AnalyticDB for MySQL admite precisión a nivel de milisegundos (hasta tres decimales).

DATETIME

De '0001-01-01 00:00:00.000' a '9999-12-31 23:59:59.999'

YYYY-MM-DD HH:MM:SS

8 bytes

Se almacena en UTC. La zona horaria no se puede cambiar. MySQL admite 0000-00-00 y precisión personalizada; AnalyticDB for MySQL convierte 0000-00-00 a NULL.

TIMESTAMP

De '0100-01-01 00:00:00.000' a '9999-12-31 23:59:59.999'

YYYY-MM-DD HH:MM:SS

8 bytes

Usa la zona horaria del sistema de forma predeterminada; puede especificar una zona horaria diferente por sesión. MySQL admite precisión personalizada; AnalyticDB for MySQL admite precisión a nivel de milisegundos (hasta tres decimales).

Importante

DATETIME siempre usa UTC. A diferencia de TIMESTAMP, la zona horaria para los valores DATETIME no se puede anular por sesión.

Tipos espaciales

Tipo

Descripción

Notas

POINT

Coordenadas geográficas x e y.

Sin diferencias respecto a MySQL.

Conversión implícita de tipos

AnalyticDB for MySQL realiza la conversión implícita de tipos automáticamente según el contexto al ejecutar consultas SQL. Las reglas de conversión difieren entre las proyecciones SELECT y los filtros WHERE.

Nota

La conversión implícita de tipos solo aplica a los tipos de datos básicos. Complex data types no admiten conversión implícita de tipos. Para los casos en que las reglas predeterminadas no satisfagan sus necesidades, utilice explicit type conversion.

Reglas de conversión de proyección

Cuando una columna en una instrucción SELECT se compara con una constante, el resultado se convierte implícitamente al tipo que se muestra en la siguiente tabla. Si la conversión no es compatible, se produce un error.

Columna \ Constante

VARCHAR

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

VARCHAR

VARCHAR

BOOLEAN

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

BOOLEAN

BOOLEAN

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

No compatible

DOUBLE

No compatible

No compatible

No compatible

No compatible

TINYINT

BIGINT

TINYINT

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

No compatible

No compatible

No compatible

No compatible

SMALLINT

BIGINT

SMALLINT

SMALLINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

No compatible

No compatible

No compatible

No compatible

INTEGER

BIGINT

INTEGER

INTEGER

INTEGER

INTEGER

BIGINT

DECIMAL

DOUBLE

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DOUBLE

BIGINT

BIGINT

BIGINT

BIGINT

DECIMAL

DECIMAL

No compatible

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DOUBLE

No compatible

No compatible

No compatible

No compatible

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

TIME

TIME

No compatible

No compatible

No compatible

BIGINT

BIGINT

No compatible

DOUBLE

TIME

BIGINT

BIGINT

DATETIME

DATE

DATE

No compatible

No compatible

No compatible

BIGINT

BIGINT

No compatible

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

TIMESTAMP

TIMESTAMP

No compatible

No compatible

No compatible

BIGINT

BIGINT

No compatible

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

DATETIME

DATETIME

No compatible

No compatible

No compatible

BIGINT

BIGINT

No compatible

DOUBLE

DATETIME

DATETIME

DATETIME

DATETIME

Reglas de conversión de filtros

Cuando una columna en una cláusula WHERE se compara con una constante de un tipo diferente, el tipo resultante se convierte implícitamente. Los tipos no coincidentes pueden impedir el pushdown, que es la optimización que envía las condiciones de filtro a la capa de almacenamiento para realizar un filtrado basado en índices. Cuando el pushdown falla, la base de datos recurre a un escaneo completo de la tabla, lo cual reduce significativamente el rendimiento de la consulta.

La siguiente tabla muestra el tipo resultante y el estado del pushdown para cada par de tipos columna-constante. ✓ = pushdown exitoso; ✗ = pushdown fallido (escaneo completo de tabla).

Columna \ Constante

VARCHAR

BOOLEAN

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

REAL

DOUBLE

TIME

DATE

TIMESTAMP

DATETIME

VARCHAR

VARCHAR ✓

BOOLEAN ✗

BIGINT ✗

BIGINT ✗

BIGINT ✗

BIGINT ✗

DECIMAL ✗

REAL ✗

DOUBLE ✗

TIME ✗

DATE ✗

TIMESTAMP ✗

DATETIME ✗

BOOLEAN

BOOLEAN ✓

BOOLEAN ✓

TINYINT ✗

SMALLINT ✗

INTEGER ✗

BIGINT ✗

No compatible

REAL ✗

DOUBLE ✗

No compatible

No compatible

No compatible

No compatible

TINYINT

TINYINT ✓

TINYINT ✓

TINYINT ✓

TINYINT ✓

TINYINT ✓

TINYINT ✓

DECIMAL ✗

REAL ✗

DOUBLE ✗

No compatible

No compatible

No compatible

No compatible

SMALLINT

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

DECIMAL ✗

REAL ✗

DOUBLE ✗

No compatible

No compatible

No compatible

No compatible

INTEGER

INTEGER ✓

INTEGER ✓

INTEGER ✓

INTEGER ✓

INTEGER ✓

INTEGER ✓

DECIMAL ✗

REAL ✗

DOUBLE ✗

INTEGER ✓

INTEGER ✓

INTEGER

INTEGER

BIGINT

BIGINT ✓

BIGINT ✓

BIGINT ✓

BIGINT ✓

BIGINT ✓

BIGINT ✓

DECIMAL ✗

REAL ✗

DOUBLE ✗

BIGINT ✓

BIGINT ✓

BIGINT

BIGINT

DECIMAL

DECIMAL ✓

DECIMAL ✓

DECIMAL ✓

DECIMAL ✓

DECIMAL ✓

DECIMAL ✓

DECIMAL ✓

REAL ✗

DOUBLE ✗

No compatible

No compatible

No compatible

No compatible

REAL

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

DOUBLE ✗

No compatible

No compatible

No compatible

No compatible

DOUBLE

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

TIME

TIME ✓

No compatible

No compatible

No compatible

BIGINT ✗

BIGINT ✗

No compatible

No compatible

DOUBLE ✗

TIME ✓

BIGINT ✗

BIGINT ✗

DATETIME ✗

DATE

DATE ✓

No compatible

No compatible

No compatible

BIGINT ✗

BIGINT ✗

No compatible

No compatible

DOUBLE ✗

BIGINT ✗

DATE ✓

TIMESTAMP ✗

DATETIME ✗

TIMESTAMP

TIMESTAMP ✓

No compatible

No compatible

No compatible

BIGINT ✗

BIGINT ✗

No compatible

No compatible

DOUBLE ✗

TIMESTAMP ✓

TIMESTAMP ✓

TIMESTAMP ✓

TIMESTAMP ✓

DATETIME

DATETIME ✓

No compatible

No compatible

No compatible

BIGINT ✗

BIGINT ✗

No compatible

No compatible

DOUBLE ✗

DATETIME ✓

DATETIME ✓

DATETIME ✓

DATETIME ✓

Optimización de conversión forzada de tipos (ENFORCE_UNWRAP_CAST)

ENFORCE_UNWRAP_CAST controla cómo AnalyticDB for MySQL maneja la conversión implícita de tipos en las condiciones de filtro. Cuando está habilitado, el sistema convierte la constante para que coincida con el tipo de la columna en lugar de hacerlo al revés; esto preserva la optimización de pushdown y evita resultados inesperados por truncamiento de valores.

Configurar ENFORCE_UNWRAP_CAST

Hay dos métodos de configuración disponibles:

  • Global: se aplica a todas las consultas del clúster.

    SET ADB_CONFIG ENFORCE_UNWRAP_CAST = true;
  • Query hint: se aplica a una sola consulta sin afectar a las demás.

    /*+ ENFORCE_UNWRAP_CAST=true */

Ejemplo

La columna col de la tabla test es de tipo VARCHAR y contiene los valores '1', '1a' y 'abc'. Al ejecutar la siguiente consulta se obtienen resultados diferentes dependiendo de si ENFORCE_UNWRAP_CAST está habilitado:

SELECT col FROM test WHERE col = 1;

Configuración

Comportamiento

Filas coincidentes

Pushdown

ENFORCE_UNWRAP_CAST=false (predeterminado)

Convierte la columna VARCHAR a BIGINT. Tanto '1' como '1a' se truncan a 1 y coinciden.

'1', '1a'

Falla: escaneo completo de tabla

ENFORCE_UNWRAP_CAST=true

Convierte la constante INTEGER 1 a VARCHAR '1'. Solo califica una coincidencia exacta de cadena.

Solo '1'

Exitoso: pushdown en capa de almacenamiento

Habilite ENFORCE_UNWRAP_CAST cuando las columnas estén declaradas como tipos de cadena pero se consulten con constantes numéricas, a fin de obtener resultados precisos y evitar escaneos completos de tabla.