← Voltar para 2. Numéricos Inteiros
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();