TEXT / MEDIUMTEXT / LONGTEXT
⭐ Essencial 💾 TEXT: até 64 KB | MEDIUMTEXT: até 16 MB | LONGTEXT: até 4 GBCampos para textos extensos como descrições detalhadas, artigos de blog, contratos e logs.
Os tipos da família TEXT são armazenados fora da estrutura principal da linha no banco de dados (off-page storage no InnoDB), deixando na linha apenas um ponteiro de 20 bytes. Isso permite guardar textos imensos sem estourar o limite de 64 KB por linha das tabelas relacionais.
✅ Quando Usar (Casos Ideais)
- • `TEXT` (até 64 KB): Descrições de produtos, biografias, comentários de usuários, observações de pedidos.
- • `MEDIUMTEXT` (até 16 MB): Artigos completos de blog em HTML/Markdown, termos de uso, templates de e-mail.
- • `LONGTEXT` (até 4 GB): Livros inteiros, dumps extensos ou payloads massivos de integrações.
🚫 Quando NÃO Usar (Armadilhas)
- • Não use `TEXT` para campos curtos que serão frequentemente filtrados com `=` ou `ORDER BY` (como nome, e-mail, cidade) — use `VARCHAR`.
- • No MySQL, colunas `TEXT` não aceitam valor `DEFAULT` literal direto em versões antigas e exigem prefixo ao criar índices normais (ou índice `FULLTEXT`).
📐 Como Configurar no DrawDB Abrir DrawDB ↗
TEXT, MEDIUMTEXT ou LONGTEXT
TEXT (suporta até 1 GB automaticamente sem precisar de MEDIUM/LONG)
TEXT
📋 Exemplos Reais de Colunas com TEXT:
CREATE TABLE artigos_blog (
id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
titulo VARCHAR(180) NOT NULL,
slug VARCHAR(200) NOT NULL UNIQUE,
resumo VARCHAR(300) NOT NULL,
conteudo_html MEDIUMTEXT NOT NULL,
FULLTEXT INDEX idx_busca_artigo (titulo, resumo, conteudo_html)
);
<?php
declare(strict_types=1);
$titulo = 'Guia Definitivo de Tipos de Dados no MySQL e PostgreSQL';
$slug = 'guia-definitivo-tipos-dados-mysql-postgresql';
$resumo = 'Aprenda quando usar VARCHAR, CHAR, TEXT, INT e DECIMAL com exemplos em PHP.';
$conteudo = "<p>Conteúdo longo do artigo...</p>";
$stmt = $pdo->prepare('
INSERT INTO artigos_blog (titulo, slug, resumo, conteudo_html)
VALUES (:titulo, :slug, :resumo, :conteudo)
');
$stmt->bindValue(':titulo', $titulo, PDO::PARAM_STR);
$stmt->bindValue(':slug', $slug, PDO::PARAM_STR);
$stmt->bindValue(':resumo', $resumo, PDO::PARAM_STR);
$stmt->bindValue(':conteudo', $conteudo, PDO::PARAM_STR);
$stmt->execute();