Questão nº 47

Questão de Banco de Dados · FCC TJ-CE 2022 (nº 47)

FCC2022Analista Judiciário - Especialidade Ciência da Computação - Área Sistemas da InformaçãoBanco de Dados
Gabarito: Aver comentário ↓

No PostgreSQL deseja-se fazer uma cópia dos nomes das colunas (sem os dados) de uma tabela chamada `cliente` para `backup_cliente` e, depois, inserir apenas os primeiros três registros (linhas) da tabela `cliente` na tabela `backup_cliente`. Para realizar essa tarefa utilizam-se os comandos

Resposta comentada

Gabarito Alternativa A

Para copiar a estrutura de uma tabela (nomes e tipos de colunas, sem os dados) e depois inserir registros específicos, usamos a combinação de CREATE TABLE AS SELECT com LIMIT 0 para a estrutura, e INSERT INTO SELECT com LIMIT N para os dados.

  • (A) Correta: A primeira linha, CREATE TABLE backup_cliente AS SELECT * FROM cliente LIMIT 0;, cria a tabela backup_cliente com a mesma estrutura (colunas e tipos) da tabela cliente, mas sem copiar nenhum dado, pois LIMIT 0 garante que nenhuma linha seja selecionada para a criação. A segunda linha, INSERT INTO backup_cliente SELECT * FROM cliente LIMIT 3;, então insere corretamente os primeiros três registros da tabela cliente na recém-criada backup_cliente.
  • (B) Incorreta: A primeira linha, CREATE TABLE backup_cliente AS SELECT * FROM cliente;, copia a estrutura e todos os dados da tabela cliente para backup_cliente, o que contraria a exigência de copiar apenas os nomes das colunas (sem os dados) inicialmente. A segunda linha, INSERT INTO backup_cliente SELECT * FROM cliente WHERE COUNT(*)<=3;, usa COUNT(*) de forma incorreta em uma cláusula WHERE sem GROUP BY, sendo sintaticamente inválida para o propósito de selecionar os primeiros três registros.
  • (C) Incorreta: A primeira linha, TRUNCATE TABLE cliente TO backup_cliente;, utiliza uma sintaxe inválida. TRUNCATE TABLE é um comando para remover todas as linhas de uma tabela existente e não possui a cláusula TO para criar ou copiar tabelas.
  • (D) Incorreta: A primeira linha, CREATE TABLE backup_cliente AS SELECT * FROM cliente;, novamente copia a estrutura e todos os dados, não atendendo ao requisito inicial. A segunda linha, INSERT INTO backup_cliente SELECT LIMIT 3 FROM cliente;, possui uma sintaxe incorreta para o LIMIT; o LIMIT deve vir após a lista de colunas no SELECT (ex: SELECT * FROM cliente LIMIT 3).
  • (E) Incorreta: A primeira linha, BACKUP TABLE cliente to backup_cliente;, não é um comando SQL padrão ou válido no PostgreSQL para criar uma tabela a partir da estrutura de outra. O PostgreSQL utiliza ferramentas como pg_dump para backups, mas não essa sintaxe SQL.

Fonte: FCC TJ-CE 2022 Analista Judiciário - Especialidade Ciência da Computação - Área Sistemas da Informação (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho