Tipos de dados inteiros no PostgreSQL
Gabarito: letra A. O PostgreSQL define exatamente três tipos de dados inteiros nativos para colunas: smallint, integer (também chamado de int) e bigint. A alternativa A é a única que lista corretamente esses três tipos, conforme a documentação oficial do PostgreSQL.
Os tipos de dados inteiros são fundamentais na definição de colunas em tabelas de bancos de dados relacionais. No PostgreSQL, esses tipos são projetados para armazenar números inteiros (positivos, negativos e zero) com diferentes faixas de valores e tamanhos de armazenamento, permitindo ao desenvolvedor escolher o tipo mais adequado para cada necessidade, equilibrando espaço em disco e capacidade de representação.
A escolha do tipo inteiro correto é importante por duas razões principais: eficiência de armazenamento e integridade dos dados. Usar um tipo com faixa menor do que a necessária pode causar erros de overflow (estouro), enquanto usar um tipo maior do que o necessário desperdiça espaço em disco e memória, o que pode impactar o desempenho em tabelas grandes. Por isso, o PostgreSQL oferece três opções com tamanhos e faixas distintos.
A tabela abaixo resume as principais características de cada tipo inteiro no PostgreSQL:
Tipo | Tamanho de armazenamento | Faixa de valores |
|---|
smallint
| 2 bytes | -32.768 a +32.767 |
integer (ou int)
| 4 bytes | -2.147.483.648 a +2.147.483.647 |
bigint
| 8 bytes | -9.223.372.036.854.775.808 a +9.223.372.036.854.775.807 |
O integer é o tipo mais comum e recomendado para a maioria das aplicações, pois oferece um bom equilíbrio entre faixa de valores, tamanho de armazenamento e desempenho. O smallint é útil quando se sabe que os valores serão pequenos, economizando espaço. O bigint é necessário quando a faixa do integer não é suficiente, como em aplicações que precisam armazenar números muito grandes (por exemplo, identificadores de escala global).
É importante notar que o PostgreSQL também oferece o tipo numeric (ou decimal), que pode armazenar números com precisão variável e é usado para valores que exigem exatidão, como valores monetários. No entanto, numeric não é um tipo inteiro, pois pode representar números com casas decimais. A questão pede especificamente os tipos inteiros, então numeric não se aplica.
A pegadinha desta questão está em confundir os tipos inteiros do PostgreSQL com os de outros SGBDs. Por exemplo, o MySQL possui tipos como tinyint, mediumint e int, que não existem no PostgreSQL. O PostgreSQL adota uma nomenclatura mais simples e padronizada, com apenas três tipos inteiros: smallint, integer e bigint. Guarde essa distinção: é exatamente nela que as alternativas se dividem.
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa A lista corretamente os três tipos de dados inteiros do PostgreSQL: smallint, integer e bigint. O integer é frequentemente abreviado como int, mas ambos se referem ao mesmo tipo. Esta é a resposta correta, pois corresponde exatamente à definição oficial do PostgreSQL.
Alternativa B — ❌ Incorreta
A alternativa B apresenta int, mediumint e maxint. O PostgreSQL não possui os tipos mediumint nem maxint. O tipo mediumint existe no MySQL, mas não no PostgreSQL. O maxint não é um tipo de dado padrão em nenhum SGBD conhecido. Portanto, esta alternativa está incorreta.
Alternativa C — ❌ Incorreta
A alternativa C apresenta minimumint, int e normalint. Nenhum desses tipos, exceto int (que é sinônimo de integer), existe no PostgreSQL. minimumint e normalint são nomes inventados e não correspondem a nenhum tipo de dado real. Portanto, esta alternativa está incorreta.
Alternativa D — ❌ Incorreta
A alternativa D apresenta smallint, int e maxint. Embora smallint e int sejam tipos válidos no PostgreSQL, maxint não existe. O terceiro tipo inteiro correto é bigint, não maxint. Portanto, esta alternativa está incorreta.
Alternativa E — ❌ Incorreta
A alternativa E apresenta tinyint, mediumint e bigint. Os tipos tinyint e mediumint são específicos do MySQL e não existem no PostgreSQL. O PostgreSQL não possui esses tipos; em vez disso, oferece smallint e integer. Portanto, esta alternativa está incorreta.
A regra de ouro para esta questão é memorizar os três tipos inteiros do PostgreSQL: smallint, integer (ou int) e bigint. Qualquer alternativa que inclua tipos como tinyint, mediumint, maxint ou outros nomes não padronizados está incorreta. Essa distinção é crucial para evitar confusão com outros SGBDs.
Gabarito: letra A