Pular para o conteúdo principal

Questão de Banco de Dados — PostgreSQL — FCC 2022

Banco de DadosPostgreSQL
Código
fc065224
Banca
FCC
Órgão
TRT - 22ª Região (PI)
Ano
2022
Cargo
Analista Judiciário - Tecnologia da Informação
Considere que um Analista está trabalhando em um banco de dados PostgreSQL aberto e funcionando em condições ideais. O Analista inseriu a seguinte sequência de comandos: 

DROP TABLE ....I... TRTContatos;
CREATE TABLE TRTContatos (
 cod serial PRIMARY KEY,
 orgao VARCHAR(255) NOT NULL,
 email VARCHAR(255) NOT NULL,
 descricao VARCHAR(255)

);

INSERT INTO
       
      TRTContatos (orgao, email)

VALUES
 
('Ouvidoria','[email protected]:'),
 ('Escola Judicial','[email protected]'),
 ('Corregedoria','[email protected]')

....II....;

É correto afirmar que
  1. Ahaverá erro, pois não é possível fazer inserção de múltiplas linhas em tabelas do PostgreSQL.
  2. Bhaverá erro devido ao fato de as 3 linhas a serem inseridas na tabela TRTContatos não terem os 4 campos informados em CREATE TABLE.
  3. CI deve ser preenchido com IF EXISTS e II deve ser preenchido com RETURNING * para que as linhas inseridas sejam apresentadas.
  4. DI deve ser preenchido com ALL ROWS e II deve ficar sem nenhum preenchimento.
  5. Efaltou um _ entre cod e serial, pois o certo seria cod_serial PRIMARY KEY.
Revelar gabarito e comentário

GabaritoC — I deve ser preenchido com IF EXISTS e II deve ser preenchido com RETURNING * para que as linhas inseridas sejam apresentadas.

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: Comandos DDL e DML (DROP, CREATE, INSERT) com RETURNING

Gabarito: letra C. A sintaxe correta no PostgreSQL exige a cláusula IF EXISTS no DROP TABLE para evitar erro caso a tabela não exista, e a cláusula RETURNING * no INSERT para recuperar as linhas inseridas após sua execução.

A questão testa o conhecimento de sintaxes específicas do PostgreSQL: DROP TABLE IF EXISTS e INSERT ... RETURNING. A sequência de comandos do enunciado deve ser completada de forma que não ocorra erro e que as linhas inseridas sejam apresentadas.

Comando

Cláusula I (DROP TABLE)

Cláusula II (INSERT)

Efeito

DROP TABLE

IF EXISTS

Evita erro se a tabela não existir

INSERT

RETURNING *

Exibe as linhas recém-inseridas

Alternativa A — ❌ Incorreta

Afirma que não é possível inserir múltiplas linhas no PostgreSQL. Na verdade, o PostgreSQL permite inserir várias linhas com uma única instrução INSERT, separando os conjuntos de valores por vírgula. O comando mostrado é perfeitamente válido.

Alternativa B — ❌ Incorreta

Afirma que haverá erro porque as 3 linhas não têm os 4 campos definidos no CREATE TABLE. No entanto, o INSERT especifica apenas as colunas orgao e email; as demais colunas (cod, que é serial e gera automaticamente, e descricao, que aceita NULL) não precisam ser fornecidas. O comando é válido.

Alternativa C — ✅ Correta ⟵ GABARITO

Preenche I com IF EXISTS e II com RETURNING *. DROP TABLE IF EXISTS é a forma segura de evitar erro se a tabela não existir. INSERT ... RETURNING * exibe as linhas recém-inseridas, conforme solicitado no enunciado ("as linhas inseridas sejam apresentadas").

Alternativa D — ❌ Incorreta

ALL ROWS não é uma cláusula válida para o comando DROP TABLE no PostgreSQL. Para apresentar as linhas inseridas, é necessário usar RETURNING; deixar II vazio não as apresentaria.

Alternativa E — ❌ Incorreta

cod serial PRIMARY KEY é a sintaxe correta: cod é o nome da coluna, serial é o tipo de dado (um atalho para integer com auto-incremento), e PRIMARY KEY é a restrição. Não falta underscore. A sugestão cod_serial seria um nome de coluna, não um tipo.

PEGA ESSA DICA!

No PostgreSQL, lembre-se de que o INSERT pode ser seguido de RETURNING para obter os valores inseridos (similar ao OUTPUT do SQL Server). Além disso, o DROP TABLE IF EXISTS evita erros em scripts reexecutáveis.

Gabarito: letra C.

Link permanente: /questoes/fc065224