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.

✕

2. Numéricos Inteiros 1 tipo

Números sem casas decimais para contagens, quantidades em estoque, idades, ordenação e códigos numéricos.

SMALLINT / SMALLINT UNSIGNED

💾 2 Bytes (16 bits)

Inteiro de 2 Bytes para faixas intermediárias (0 a 65.535 sem sinal).

Ocupa metade do espaço de um INT comum (2 bytes). É ideal para quantidades moderadas que passam de 255 mas nunca chegarão a 65 mil, como ano de fabricação de veículos, número de páginas de um livro, portas de rede TCP/IP (1 a 65535) ou ordem de exibição de itens em menus e galerias.

Limites de Capacidade: Unsigned: 0 a 65.535 | Signed: -32.768 a 32.767

✅ Quando Usar (Casos Ideais)

  • • Número de páginas de um livro, duração de um filme em minutos.
  • • Ano histórico ou ano modelo de veículo (ex: 1850 a 2150).
  • • Porta de servidor de rede (0 a 65535).
  • • Quantidade de itens por pedido no carrinho de compras.

🚫 Quando NÃO Usar (Armadilhas)

  • • Estoque de produtos em atacado ou visualizações de página que possam ultrapassar 65.535.

📐 Como Configurar no DrawDB Abrir DrawDB ↗

Type no DrawDB: SMALLINT
Size / Values: Vazio
Default sugerido: Ex: 0 ou 1
Equivalência nos Dialetos do DrawDB:
MySQL / MariaDB SMALLINT UNSIGNED
PostgreSQL SMALLINT
SQLite INTEGER

📋 Exemplos Reais de Colunas com SMALLINT:

ano_fabricacao
SMALLINT UNSIGNED NOT NULL
Ano do veículo (ex: 2026)
numero_paginas
SMALLINT UNSIGNED NULL
Total de páginas de um livro
ordem_exibicao
SMALLINT UNSIGNED NOT NULL DEFAULT 0
Ordenação de banners/menus
🗄️ SQL DDL (Importar no DrawDB: Import > SQL)
CREATE TABLE livros (
    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    titulo VARCHAR(180) NOT NULL,
    ano_publicacao SMALLINT UNSIGNED NOT NULL,
    numero_paginas SMALLINT UNSIGNED NOT NULL
);
🐘 Como Validar e Salvar no PHP 8 + PDO
<?php
declare(strict_types=1);

$paginas = 384;
$ano = 2026;

if ($paginas < 1 || $paginas > 65535) {
    throw new RangeException('Número de páginas fora do limite de SMALLINT.');
}

$stmt = $pdo->prepare('
    INSERT INTO livros (titulo, ano_publicacao, numero_paginas)
    VALUES (:titulo, :ano, :paginas)
');
$stmt->bindValue(':titulo', 'Arquitetura de Bancos de Dados em PHP', PDO::PARAM_STR);
$stmt->bindValue(':ano', $ano, PDO::PARAM_INT);
$stmt->bindValue(':paginas', $paginas, PDO::PARAM_INT);
$stmt->execute();