Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FUNDATEC 2025

Banco de DadosPostgreSQL
Código
qg484503
Banca
FUNDATEC
Órgão
UFRGS
Ano
2025
Nível
Médio
Cargo
Técnico em Tecnologia da Informação/Área: Sistemas de Informação
Em um ambiente corporativo, um analista precisa criar uma tabela no PostgreSQL para armazenar informações de funcionários, incluindo um identificador único, o nome completo e a data de admissão. Considerando boas práticas de modelagem e os tipos de dados disponíveis nesse SGBD, assinale a alternativa correta.
  1. ACREATE TABLE funcionario (id SERIAL PRIMARY KEY,nome VARCHAR(255),data_admissao DATE);
  2. BCREATE TABLE funcionario (id INT PRIMARY KEY,nome TEXT(255),data_admissao DATETIME);
  3. CCREATE TABLE funcionario (id AUTO_INCREMENT PRIMARY KEY,nome NVARCHAR(255),data_admissao DATETIME2);
  4. DCREATE TABLE funcionario (id BIGINT AUTO PRIMARY,nome CHAR,data_admissao SMALLDATETIME);
  5. ECREATE TABLE funcionario (id IDENTITY PRIMARY,nome VARCHAR(255),data_admissao TIMESTAMP WITHOUT TIME ZONE);
Revelar gabarito e comentário

GabaritoA — CREATE TABLE funcionario ( id SERIAL PRIMARY KEY, nome VARCHAR(255), data_admissao DATE );

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

PostgreSQL: Criação de Tabelas

Gabarito: letra A. A alternativa A utiliza corretamente o tipo SERIAL para auto-incremento, VARCHAR(255) para o nome e DATE para a data de admissão, todos nativos do PostgreSQL. As demais alternativas misturam sintaxes de outros SGBDs ou usam tipos inexistentes no PostgreSQL.

A banca testa o conhecimento dos tipos de dados e recursos específicos do PostgreSQL. Em particular, o auto-incremento em PostgreSQL é feito com SERIAL (ou BIGSERIAL), e não com AUTO_INCREMENT (MySQL) ou IDENTITY (SQL Server). O tipo para data sem hora é DATE; para data com hora usa-se TIMESTAMP. Não existem DATETIME, DATETIME2, SMALLDATETIME ou TEXT(255) no PostgreSQL.

Alternativa A — ✅ Correta ⟵ GABARITO

Utiliza SERIAL (que cria uma sequência automática) para a chave primária, VARCHAR(255) para o nome (tamanho variável com limite) e DATE para a data de admissão. Tudo compatível com PostgreSQL.

Alternativa B — ❌ Incorreta

  • INT não é auto-incremento; deveria ser SERIAL.

  • TEXT(255) é inválido: TEXT não aceita tamanho em PostgreSQL; use VARCHAR(255).

  • DATETIME não existe; use TIMESTAMP ou DATE.

Alternativa C — ❌ Incorreta

  • AUTO_INCREMENT é do MySQL, não do PostgreSQL.

  • NVARCHAR é do SQL Server; no PostgreSQL use VARCHAR com codificação adequada.

  • DATETIME2 é do SQL Server; inexistente no PostgreSQL.

Alternativa D — ❌ Incorreta

  • BIGINT AUTO PRIMARY é sintaxe inválida: AUTO não é palavra-chave; o correto seria BIGSERIAL.

  • CHAR sem tamanho equivale a CHAR(1), inadequado para nome completo.

  • SMALLDATETIME não existe; use TIMESTAMP com precisão menor, se necessário.

Alternativa E — ❌ Incorreta

  • IDENTITY PRIMARY é do SQL Server; no PostgreSQL use SERIAL ou GENERATED AS IDENTITY (a partir da versão 10), mas a sintaxe IDENTITY sozinha não é reconhecida.

  • TIMESTAMP WITHOUT TIME ZONE é válido, mas o erro na chave primária invalida a alternativa.

NÃO CAIA NESSA!

A banca mistura sintaxes de MySQL, SQL Server e PostgreSQL. Decore os equivalentes: SERIAL (PostgreSQL) = AUTO_INCREMENT (MySQL) = IDENTITY (SQL Server).

Gabarito: letra A.

Link permanente: /questoes/qg484503