2. Numéricos Inteiros
SMALLINT / SMALLINT UNSIGNED
Inteiro de 2 Bytes para faixas intermediárias (0 a 65.535 sem sinal).
💾 Espaço em Disco: 2 Bytes (16 bits)
📏 Limites: Unsigned: 0 a 65.535 | Signed: -32.768 a 32.767
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.
✅ Quando Usar
- •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
- •Estoque de produtos em atacado ou visualizações de página que possam ultrapassar 65.535.
📐 Configuração no DrawDB
- Type:
- SMALLINT
- Size / Values:
- Vazio
- Default:
- Ex: 0 ou 1
MySQL / MariaDB
SMALLINT UNSIGNED
PostgreSQL
SMALLINT
SQLite
INTEGER
🗄️ SQL DDL (Pronto para Importar no DrawDB)
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
);
🐘 Exemplo Prático em 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();