← MySQL: desenvolvimento e operação segura
01 / 12 · 40 MIN

Tipos e contratos dos dados

Escolhe representação, comparação e validação segundo o significado dos dados.

Conceito e mecanismo

Um schema define mais do que espaço de armazenamento. DECIMAL representa valores exatos dentro da precisão e escala declaradas; DOUBLE usa aproximação binária. Para montantes ou taxas, decide também onde arredondar e como tratar valores fora do intervalo. Mudar apenas a apresentação não corrige um cálculo anterior. TIMESTAMP converte entre UTC e a zona da sessão; DATETIME não faz essa conversão automática. Nenhum destes tipos conserva por si só o identificador da zona original. A collation define regras de comparação: uma collation _ci ignora diferenças de maiúsculas, o que pode contrariar a identidade de um código de negócio.

Aplicação guiada

Num batch fictício de comissões, usa casos com frações, limites, valores ausentes e zonas diferentes. NULL representa ausência de valor, não zero nem string vazia. COUNT(*) conta linhas, enquanto COUNT(coluna) ignora NULL nessa expressão. Verifica ainda sql_mode da sessão: modo estrito, IGNORE e tipos podem alterar se uma entrada inválida provoca erro ou aviso. A revisão deve comparar comportamento do driver, do cálculo e do armazenamento. Antes de migrar dados, define reconciliação e critérios de aceitação com o responsável funcional. Uma conversão para DECIMAL não reconstrói informação que já foi perdida num cálculo aproximado.

NA PRÁTICA

Referências X, NULL e Y: COUNT(*) devolve 3; COUNT(reference) devolve 2.

Armadilhas comuns

Formato como precisão; NULL como vazio; collation só visual; time_zone implícita no pool.

Tópicos relacionados: Consultas determinísticas e planos · Transações InnoDB e caminhos de erro · Integração segura e identidade efetiva

Leva esta ideia contigo

O tipo deve preservar o contrato funcional ao longo de todo o fluxo.

Criar conta

Referência: Exact decimal data types · MySQL 9.7 LTS with InnoDB reference semantics

MySQL® é uma marca registada da Oracle e/ou das suas afiliadas. A dr.pt é uma plataforma de preparação independente e não está afiliada, associada, patrocinada, autorizada nem aprovada por Oracle. Os conteúdos e as perguntas são originais, não são perguntas oficiais de exame, e concluir os nossos testes não atribui nem garante qualquer certificação. Os nomes são usados apenas para identificar o tema. Todas as outras marcas pertencem aos respetivos titulares.