Todos os produtos
Search
Central de documentação

AnalyticDB:Tipos de dados básicos

Última atualização: Aug 20, 2026

O AnalyticDB for MySQL oferece suporte a um conjunto principal de tipos de dados SQL nas categorias numérica, string, tempo e espacial. Esta página descreve o tamanho de armazenamento, o intervalo de valores e as diferenças em relação ao MySQL padrão para cada tipo, além das regras de conversão implícita de tipos.

Tipos de dados suportados

Tipos numéricos

Tipo Alias Intervalo de valores Tamanho Observações
BOOLEAN 0 (falso), 1 (verdadeiro) 1 bit Sem diferença em relação ao MySQL.
TINYINT -128 a 127 1 byte Sem diferença em relação ao MySQL.
SMALLINT -32768 a 32767 2 bytes Sem diferença em relação ao MySQL.
INT ou INTEGER -2147483648 a 2147483647 4 bytes Corresponde a INT ou MEDIUMINT do MySQL.
BIGINT -9223372036854775808 a 9223372036854775807 8 bytes Sem diferença em relação ao MySQL.
FLOAT -3.402823466E+38 a -1.175494351E-38, 0, 1.175494351E-38 a 3.402823466E+38 4 bytes Segue o padrão IEEE. Sem diferença em relação ao MySQL.
DOUBLE -1.7976931348623157E+308 a -2.2250738585072014E-308, 0, 2.2250738585072014E-308 a 1.7976931348623157E+308 8 bytes Segue o padrão IEEE. Sem diferença em relação ao MySQL.
DECIMAL(m,d) ou NUMERIC m: precisão máxima 138; d: escala decimal, deve ser ≤ m

O MySQL suporta precisão máxima de 65; o AnalyticDB for MySQL suporta até 38. Se a precisão DECIMAL exceder 38, a instrução CREATE TABLE falhará e retornará o código de erro 5030 com a mensagem decimal precision must be less than or equal to 38. Em versões anteriores, a precisão máxima padrão era 1000, mas foi reduzida para 38 na versão atual. Caso sua carga de trabalho exija uma precisão maior que 38, utilize um dos métodos abaixo:

  • Reduza a precisão: defina a precisão DECIMAL como 38 ou menos.

  • Aumente o limite no backend: entre em contato com o Suporte Técnico da Alibaba Cloud para definir o parâmetro DECIMAL_MAX_PRECISION como 1000 e reinicie o cluster para aplicar a alteração. Este é um parâmetro de backend que não pode ser modificado nas configurações do cluster no console nem por chamada de API.

Tipos de string

Tipo

Descrição

Equivalente no MySQL

VARCHAR

Até 16 MB. Um especificador de comprimento como VARCHAR(255) é aceito para compatibilidade sintática — o máximo real é determinado pelo tamanho dos dados (até 16 MB), não pelo número declarado. Não confie no comprimento declarado para validação.

CHAR, VARCHAR, TEXT, MEDIUMTEXT ou LONGTEXT

BINARY

Comprimento dos caracteres de armazenamento.

BINARY, VARBINARY ou BLOB

Tipos de tempo

Tipo

Intervalo de valores

Formato

Tamanho

Observações

DATE

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

YYYY-MM-DD

4 bytes

O MySQL aceita 0000-00-00; o AnalyticDB for MySQL valida os valores de tempo e converte 0000-00-00 para NULL. Utilize datas válidas.

TIME

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

HH:MM:SS

8 bytes

O MySQL permite precisão personalizada; o AnalyticDB for MySQL suporta precisão de milissegundos (até três casas decimais).

DATETIME

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

YYYY-MM-DD HH:MM:SS

8 bytes

Armazenado em UTC. O fuso horário não pode ser alterado. O MySQL aceita 0000-00-00 e precisão personalizada; o AnalyticDB for MySQL converte 0000-00-00 para NULL.

TIMESTAMP

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

YYYY-MM-DD HH:MM:SS

8 bytes

Usa o fuso horário do sistema por padrão; é possível especificar um fuso horário diferente por sessão. O MySQL permite precisão personalizada; o AnalyticDB for MySQL suporta precisão de milissegundos (até três casas decimais).

Importante

DATETIME sempre utiliza UTC. Diferentemente de TIMESTAMP, o fuso horário dos valores DATETIME não pode ser substituído por sessão.

Tipos espaciais

Tipo

Descrição

Observações

POINT

Coordenadas geográficas x e y.

Sem diferença em relação ao MySQL.

Conversão implícita de tipos

O AnalyticDB for MySQL converte tipos implicitamente de forma automática com base no contexto durante a execução de consultas SQL. As regras de conversão diferem entre projeções SELECT e filtros WHERE.

Nota

A conversão implícita de tipos aplica-se apenas aos tipos de dados básicos. Complex data types não suportam conversão implícita. Quando as regras padrão não atenderem às suas necessidades, utilize explicit type conversion.

Regras de conversão de projeção

Ao comparar uma coluna em uma instrução SELECT com uma constante, o resultado é convertido implicitamente para o tipo indicado na tabela a seguir. Se a conversão não for suportada, ocorrerá um erro.

Coluna \ 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

Não suportado

DOUBLE

Não suportado

Não suportado

Não suportado

Não suportado

TINYINT

BIGINT

TINYINT

TINYINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

Não suportado

Não suportado

Não suportado

Não suportado

SMALLINT

BIGINT

SMALLINT

SMALLINT

SMALLINT

INTEGER

BIGINT

DECIMAL

DOUBLE

Não suportado

Não suportado

Não suportado

Não suportado

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

Não suportado

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DECIMAL

DOUBLE

Não suportado

Não suportado

Não suportado

Não suportado

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

DOUBLE

TIME

TIME

Não suportado

Não suportado

Não suportado

BIGINT

BIGINT

Não suportado

DOUBLE

TIME

BIGINT

BIGINT

DATETIME

DATE

DATE

Não suportado

Não suportado

Não suportado

BIGINT

BIGINT

Não suportado

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

TIMESTAMP

TIMESTAMP

Não suportado

Não suportado

Não suportado

BIGINT

BIGINT

Não suportado

DOUBLE

BIGINT

TIMESTAMP

TIMESTAMP

DATETIME

DATETIME

DATETIME

Não suportado

Não suportado

Não suportado

BIGINT

BIGINT

Não suportado

DOUBLE

DATETIME

DATETIME

DATETIME

DATETIME

Regras de conversão de filtro

Quando uma coluna em uma cláusula WHERE é comparada com uma constante de tipo diferente, o tipo do resultado é convertido implicitamente. Tipos incompatíveis podem impedir o pushdown — otimização que envia as condições de filtro para a camada de armazenamento visando a filtragem baseada em índice. Se o pushdown falhar, o banco de dados recorre a uma varredura completa da tabela, o que reduz significativamente o desempenho da consulta.

A tabela abaixo mostra o tipo resultante e o status do pushdown para cada par coluna-constante. ✓ = pushdown bem-sucedido; ✗ = falha no pushdown (varredura completa da tabela).

Coluna \ 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 ✗

Não suportado

REAL ✗

DOUBLE ✗

Não suportado

Não suportado

Não suportado

Não suportado

TINYINT

TINYINT ✓

TINYINT ✓

TINYINT ✓

TINYINT ✓

TINYINT ✓

TINYINT ✓

DECIMAL ✗

REAL ✗

DOUBLE ✗

Não suportado

Não suportado

Não suportado

Não suportado

SMALLINT

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

SMALLINT ✓

DECIMAL ✗

REAL ✗

DOUBLE ✗

Não suportado

Não suportado

Não suportado

Não suportado

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 ✗

Não suportado

Não suportado

Não suportado

Não suportado

REAL

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

REAL ✓

DOUBLE ✗

Não suportado

Não suportado

Não suportado

Não suportado

DOUBLE

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

DOUBLE ✓

TIME

TIME ✓

Não suportado

Não suportado

Não suportado

BIGINT ✗

BIGINT ✗

Não suportado

Não suportado

DOUBLE ✗

TIME ✓

BIGINT ✗

BIGINT ✗

DATETIME ✗

DATE

DATE ✓

Não suportado

Não suportado

Não suportado

BIGINT ✗

BIGINT ✗

Não suportado

Não suportado

DOUBLE ✗

BIGINT ✗

DATE ✓

TIMESTAMP ✗

DATETIME ✗

TIMESTAMP

TIMESTAMP ✓

Não suportado

Não suportado

Não suportado

BIGINT ✗

BIGINT ✗

Não suportado

Não suportado

DOUBLE ✗

TIMESTAMP ✓

TIMESTAMP ✓

TIMESTAMP ✓

TIMESTAMP ✓

DATETIME

DATETIME ✓

Não suportado

Não suportado

Não suportado

BIGINT ✗

BIGINT ✗

Não suportado

Não suportado

DOUBLE ✗

DATETIME ✓

DATETIME ✓

DATETIME ✓

DATETIME ✓

Otimização de conversão forçada de tipo (ENFORCE_UNWRAP_CAST)

ENFORCE_UNWRAP_CAST controla como o AnalyticDB for MySQL lida com a conversão implícita de tipos nas condições de filtro. Quando ativado, o sistema converte a constante para corresponder ao tipo da coluna, e não o contrário — preservando a otimização de pushdown e evitando resultados inesperados causados pelo truncamento de valores.

Configure ENFORCE_UNWRAP_CAST

Dois métodos de configuração estão disponíveis:

  • Global — aplica-se a todas as consultas no cluster:

    SET ADB_CONFIG ENFORCE_UNWRAP_CAST = true;
  • Query hint — aplica-se a uma única consulta sem afetar as demais:

    /*+ ENFORCE_UNWRAP_CAST=true */

Exemplo

A coluna col na tabela test é do tipo VARCHAR e contém os valores '1', '1a' e 'abc'. A execução da consulta a seguir produz resultados diferentes dependendo se ENFORCE_UNWRAP_CAST está ativado:

SELECT col FROM test WHERE col = 1;

Configuração

Comportamento

Linhas correspondentes

Pushdown

ENFORCE_UNWRAP_CAST=false (padrão)

Converte a coluna VARCHAR para BIGINT. '1' e '1a' são ambos truncados para 1 e correspondem.

'1', '1a'

Falha — varredura completa da tabela

ENFORCE_UNWRAP_CAST=true

Converte a constante INTEGER 1 para VARCHAR '1'. Apenas uma correspondência exata de string é qualificada.

Somente '1'

Sucesso — pushdown na camada de armazenamento

Ative ENFORCE_UNWRAP_CAST quando as colunas forem declaradas como tipos de string, mas consultadas com constantes numéricas, para obter resultados precisos e evitar varreduras completas da tabela.