Todos os produtos
Search
Central de documentação

AnalyticDB:Tipos de dados básicos

Última atualização: Jun 27, 2026

O AnalyticDB for MySQL suporta 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 no 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 de 1 a 38; d: escala decimal, deve ser ≤ m

O MySQL suporta precisão máxima de 65; o AnalyticDB for MySQL suporta até 38. Para ajustar a precisão máxima, entre em contato com o Suporte Técnico.

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 limite real depende do tamanho dos dados (até 16 MB), não do número declarado. Não use o comprimento declarado para validação.

CHAR, VARCHAR, TEXT, MEDIUMTEXT ou LONGTEXT

BINARY

Comprimento dos caracteres de armazenamento.

BINARY, VARBINARY ou BLOB

Tipos de data e hora

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 em NULL. Use datas válidas.

TIME

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

HH:MM:SS

8 bytes

O MySQL aceita precisão personalizada. O AnalyticDB for MySQL oferece 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. Não é possível alterar o fuso horário. O MySQL aceita 0000-00-00 e precisão personalizada. O AnalyticDB for MySQL converte 0000-00-00 em 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 aceita precisão personalizada. O AnalyticDB for MySQL oferece precisão de milissegundos (até três casas decimais).

Importante

DATETIME sempre usa UTC. Ao contrário de TIMESTAMP, não é possível substituir o fuso horário dos valores DATETIME 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 a tipos de dados básicos. Tipos de dados complexos não suportam conversão implícita de tipos. Caso as regras padrão não atendam às suas necessidades, use conversão explícita de tipos.

Regras de conversão de projeção

Ao comparar uma coluna em uma instrução SELECT com uma constante, o sistema converte o resultado implicitamente para o tipo mostrado 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

Ao comparar uma coluna em uma cláusula WHERE com uma constante de tipo diferente, o sistema converte o tipo do resultado implicitamente. Tipos incompatíveis podem impedir o pushdown, otimização que envia condições de filtro à camada de armazenamento para filtragem baseada em índice. Quando o pushdown falha, 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 de tipos 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 tipos (ENFORCE_UNWRAP_CAST)

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

Configure ENFORCE_UNWRAP_CAST

Há dois métodos de configuraçã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 do estado de ENFORCE_UNWRAP_CAST:

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 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 qualifica.

Apenas '1'

Sucesso — pushdown na camada de armazenamento

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