Referência Completa de Tipos de Dados SQL

Manual de Todos os Campos do Banco de Dados

Explore cada tipo de campo (VARCHAR, CHAR, INT, DECIMAL, TIMESTAMP, JSON, ENUM...) agrupado por funcionalidade, como configurar no DrawDB e como validar e gravar com PHP 8 + PDO.

✕

1. Identificadores & Chaves 1 tipo

Campos responsáveis por identificar unicamente cada linha (Primary Keys) e conectar tabelas (Foreign Keys), incluindo auto-incremento e UUIDs.

BIGINT UNSIGNED AUTO_INCREMENT

⭐ Essencial 💾 8 Bytes (64 bits)

Chave primária de 64 bits para tabelas massivas (padrão em frameworks modernos como Laravel).

Ocupa o dobro do espaço de um INT (8 bytes em vez de 4), mas permite até 18 quintilhões de registros. Frameworks modernos como Laravel utilizam BIGINT UNSIGNED como padrão (`$table->id()`) para garantir que nenhuma tabela esgote seus IDs, mesmo em sistemas de grande escala.

Limites de Capacidade: De 0 até 18.446.744.073.709.551.615 (Unsigned)

✅ Quando Usar (Casos Ideais)

  • • Tabelas que crescem rapidamente: pedidos, itens_pedido, logs_acesso, mensagens_chat, notificações, movimentações.
  • • Como padrão geral de chave primária caso queira total padronização no banco inteiro.

🚫 Quando NÃO Usar (Armadilhas)

  • • Tabelas auxiliares estáticas minúsculas (ex: estados_brasileiros com 27 linhas), onde `TINYINT` ou `INT` economiza memória em milhões de FKs.
  • • ATENÇÃO NO DRAWDB: Nunca crie uma FK `INT` apontando para uma PK `BIGINT`! O MySQL recusará criar a Foreign Key (Erro 150 / 3780).

📐 Como Configurar no DrawDB Abrir DrawDB ↗

Type no DrawDB: BIGINT
Size / Values: Vazio
Default sugerido: Vazio
Equivalência nos Dialetos do DrawDB:
MySQL / MariaDB BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY
PostgreSQL BIGSERIAL PRIMARY KEY
SQLite INTEGER PRIMARY KEY AUTOINCREMENT

📋 Exemplos Reais de Colunas com BIGINT:

id
BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY
PK de tabela de alto volume
usuario_id
BIGINT UNSIGNED NOT NULL
FK compatível com usuarios.id (BIGINT)
🗄️ SQL DDL (Importar no DrawDB: Import > SQL)
CREATE TABLE usuarios (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(150) NOT NULL UNIQUE
);

CREATE TABLE logs_auditoria (
    id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    usuario_id BIGINT UNSIGNED NOT NULL,
    acao VARCHAR(100) NOT NULL,
    criado_em TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    CONSTRAINT fk_logs_usuario
        FOREIGN KEY (usuario_id) REFERENCES usuarios(id)
        ON DELETE CASCADE
);
🐘 Como Validar e Salvar no PHP 8 + PDO
<?php
declare(strict_types=1);

// Em PHP de 64-bits (padrão atual), o tipo `int` suporta até 9 quintilhões (PHP_INT_MAX).
$usuarioId = 9876543210;

$stmt = $pdo->prepare('
    INSERT INTO logs_auditoria (usuario_id, acao)
    VALUES (:usuario_id, :acao)
');
$stmt->bindValue(':usuario_id', $usuarioId, PDO::PARAM_INT);
$stmt->bindValue(':acao', 'LOGIN_SUCESSO', PDO::PARAM_STR);
$stmt->execute();

$logId = (int) $pdo->lastInsertId();