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.

✕

9. Booleanos & Flags 1 tipo

Estados binários de verdadeiro/falso (ativo/inativo, pago/pendente, verificado/não verificado).

BOOLEAN / TINYINT(1) (Verdadeiro ou Falso)

⭐ Essencial 💾 1 Byte

Armazena estados binários Verdadeiro (1 / true) ou Falso (0 / false) como ativo, pago ou verificado.

No MySQL e MariaDB, a palavra-chave `BOOLEAN` (ou `BOOL`) é um apelido (alias) para `TINYINT(1)`, onde `0` representa `false` e `1` representa `true`. No PostgreSQL, `BOOLEAN` é um tipo dedicado que aceita `TRUE` e `FALSE`. Dica de modelagem: se você precisa saber QUANDO a flag virou verdadeira (ex: quando o e-mail foi verificado), em vez de `email_verificado BOOLEAN`, crie `email_verificado_em TIMESTAMP NULL`!

Limites de Capacidade: 0 (False) ou 1 (True) — mais NULL se a coluna for nullable

✅ Quando Usar (Casos Ideais)

  • • Flags de controle simples: `ativo`, `destaque_home`, `aceitou_termos`, `frete_gratis`.
  • • Configurações de liga/desliga.

🚫 Quando NÃO Usar (Armadilhas)

  • • Nunca use `VARCHAR(3)` escrevendo `"SIM"` e `"NAO"` ou `CHAR(1)` com `"S"` e `"N"`! Use sempre `BOOLEAN` / `TINYINT(1)` com `0` e `1`.

📐 Como Configurar no DrawDB Abrir DrawDB ↗

Type no DrawDB: BOOLEAN (ou TINYINT no MySQL)
Size / Values: 1 (se selecionar TINYINT) ou vazio (se selecionar BOOLEAN)
Default sugerido: 1 (true) ou 0 (false)
Equivalência nos Dialetos do DrawDB:
MySQL / MariaDB BOOLEAN NOT NULL DEFAULT 1 (ou TINYINT(1))
PostgreSQL BOOLEAN NOT NULL DEFAULT TRUE
SQLite INTEGER NOT NULL DEFAULT 1 (0 ou 1)

📋 Exemplos Reais de Colunas com BOOLEAN:

ativo
BOOLEAN NOT NULL DEFAULT 1
Indica se o cadastro está ativo no sistema
em_destaque
BOOLEAN NOT NULL DEFAULT 0
Exibir produto na vitrine principal
🗄️ SQL DDL (Importar no DrawDB: Import > SQL)
CREATE TABLE cupons_desconto (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    codigo VARCHAR(30) NOT NULL UNIQUE,
    ativo BOOLEAN NOT NULL DEFAULT 1,
    uso_unico BOOLEAN NOT NULL DEFAULT 0
);
🐘 Como Validar e Salvar no PHP 8 + PDO
<?php
declare(strict_types=1);

$ativo    = true;
$usoUnico = false;

// Nota importante no PDO + MySQL: converter bool para int (1 ou 0) com PDO::PARAM_INT
// evita incompatibilidades de driver em modo estrito do MySQL.
$stmt = $pdo->prepare('
    INSERT INTO cupons_desconto (codigo, ativo, uso_unico)
    VALUES (:codigo, :ativo, :uso_unico)
');
$stmt->bindValue(':codigo', 'BEMVINDO10', PDO::PARAM_STR);
$stmt->bindValue(':ativo', $ativo ? 1 : 0, PDO::PARAM_INT);
$stmt->bindValue(':uso_unico', $usoUnico ? 1 : 0, PDO::PARAM_INT);
$stmt->execute();

// Ao ler do banco no PHP, faça o cast explícito para (bool):
$cupomAtivo = (bool) 1; // true