Pular para o conteúdo principal

Questão de Banco de Dados — Backup em Banco de Dados — FCC 2022

Banco de DadosBackup em Banco de Dados
Código
fc063824
Banca
FCC
Órgão
TJ-CE
Ano
2022
Cargo
Analista Judiciário - Ciência da Computação - Sistemas da Informação
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 com
  1. ACREATE TABLE backup cliente AS SELECT * FROM cliente LIMIT 0;INSERT INTO backup cliente SELECT * FROM cliente LIMIT 3;
  2. BCREATE TABLE backup cliente AS SELECT * FROM cliente;INSERT INTO backup cliente SELECT * FROM cliente WHERE COUNT (*)<=3;
  3. CTRUNCATE TABLE cliente TO backup cliente;INSERT INTO backup cliente SELECT * FROM cliente LIMIT 3;
  4. DCREATE TABLE backup cliente AS SELECT * FROM cliente;INSERT INTO backup cliente SELECT LIMIT 3 FROM cliente;
  5. EBACKUP TABLE cliente to backup cliente;INSERT INTO backup cliente SELECT * FROM cliente LIMIT 3;
Revelar gabarito e comentário

GabaritoA — CREATE TABLE backup cliente AS SELECT * FROM cliente LIMIT 0; INSERT INTO backup cliente SELECT * FROM cliente LIMIT 3;

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 SQL para backup de estrutura e dados limitados

Gabarito: letra A. A alternativa A utiliza CREATE TABLE backup_cliente AS SELECT * FROM cliente LIMIT 0 para criar uma tabela com a mesma estrutura (colunas) da tabela cliente, mas sem nenhuma linha – exatamente o que se pede: "cópia dos nomes das colunas (sem os dados)". Em seguida, INSERT INTO backup_cliente SELECT * FROM cliente LIMIT 3 insere os três primeiros registros. As demais opções contêm erros de sintaxe ou de lógica.

Alternativa

Comando 1 (Criar backup da estrutura)

Comando 2 (Inserir 3 registros)

Correto?

Motivo

A

CREATE TABLE backup_cliente AS SELECT * FROM cliente LIMIT 0

INSERT INTO backup_cliente SELECT * FROM cliente LIMIT 3

✅ Sim

Cria tabela vazia com mesma estrutura; insere 3 primeiras linhas.

B

CREATE TABLE backup_cliente AS SELECT * FROM cliente

INSERT INTO backup_cliente SELECT * FROM cliente WHERE COUNT(*)<=3

❌ Não

Cria cópia completa (com dados); WHERE COUNT(*) é inválido.

C

TRUNCATE TABLE cliente TO backup_cliente

INSERT INTO backup_cliente SELECT * FROM cliente LIMIT 3

❌ Não

TRUNCATE ... TO não existe no PostgreSQL.

D

CREATE TABLE backup_cliente AS SELECT * FROM cliente

INSERT INTO backup_cliente SELECT LIMIT 3 FROM cliente

❌ Não

Cria cópia completa; SELECT LIMIT 3 sem colunas é inválido.

E

BACKUP TABLE cliente to backup_cliente

INSERT INTO backup_cliente SELECT * FROM cliente LIMIT 3

❌ Não

BACKUP TABLE não é comando SQL padrão do PostgreSQL.

Alternativa A — ✅ Correta ⟵ GABARITO

Como explicado, a combinação CREATE TABLE ... AS SELECT ... LIMIT 0 e INSERT ... SELECT ... LIMIT 3 cumpre integralmente os dois requisitos: copiar a estrutura (criação sem dados) e inserir exatamente as 3 primeiras linhas. Embora o identificador "backup cliente" (com espaço) seja inválido em SQL sem aspas duplas, a banca considerou a alternativa correta – provavelmente o nome correto seria backup_cliente ou a sintaxe foi interpretada como válida para o contexto.

Alternativa B — ❌ Incorreta

O comando CREATE TABLE backup_cliente AS SELECT * FROM cliente cria uma cópia completa (estrutura e todos os dados) da tabela original, o que não atende à primeira parte do objetivo (apenas estrutura). Além disso, o INSERT tenta usar a cláusula WHERE COUNT(*)<=3, o que é inválido: COUNT(*) é uma função de agregação e não pode ser usada em WHERE diretamente.

Alternativa C — ❌ Incorreta

TRUNCATE TABLE cliente TO backup_cliente não é válido em PostgreSQL. O comando TRUNCATE remove todas as linhas de uma tabela, mas não possui cláusula TO e não cria uma nova tabela. A tarefa exige criar uma tabela separada e inserir dados, não truncar a original.

Alternativa D — ❌ Incorreta

A dupla CREATE TABLE backup_cliente AS SELECT * FROM cliente (cópia completa) seguida de INSERT INTO backup_cliente SELECT LIMIT 3 FROM cliente é problemática. O segundo comando tem sintaxe errada: SELECT LIMIT 3 sem cláusula SELECT * ou lista de colunas – o correto seria SELECT * FROM cliente LIMIT 3.

Alternativa E — ❌ Incorreta

BACKUP TABLE cliente to backup_cliente não é um comando SQL padrão do PostgreSQL. Para fazer backup de uma tabela, utiliza-se o utilitário externo pg_dump ou o comando COPY. Não existe BACKUP TABLE no SQL do PostgreSQL.

Gabarito: letra A.

Link permanente: /questoes/fc063824