Um banco de dados aberto e em condições ideais possui uma tabela chamada filiado com os campos idFiliado (inteiro), nomeFiliado (cadeia de 50 caracteres) e dataFiliacao (data) e contém 10 registros cadastrados. Um Analista deseja copiar estes registros para uma tabela chamada cliente, que possui os campos idCliente (inteiro), nomeCliente (cadeia de 50 caracteres) e dataCadastroCliente (data). Para realizar a cópia terá que utilizar o comando SQL
ACOPY FROM filiado (idFiliado, nomeFiliado, dataFiliacao) TO cliente (idCliente, nomeCliente, dataCadastroCliente);
BCOPY TO cliente (idCliente, nomeCliente, dataCadastroCliente) FROM filiado (idFiliado, nomeFiliado, dataFiliacao);
CINSERT INTO cliente (idCliente, nomeCliente, dataCadastroCliente) SELECT idFiliado, nomeFiliado, dataFiliacao FROM filiado;
DINSERT * TO cliente REFERENCES * FROM filiado KEEP CASCADE;
EINSERT INTO cliente (idCliente, nomeCliente, dataCadastroCliente) FROM filiado(idFiliado, nomeFiliado, dataFiliacao);
Revelar gabarito e comentário▾
GabaritoC — INSERT INTO cliente (idCliente, nomeCliente, dataCadastroCliente) SELECT idFiliado, nomeFiliado, dataFiliacao FROM filiado;
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”.
Comando SQL para cópia de dados entre tabelas
Gabarito: letra C. Para copiar registros de uma tabela existente para outra tabela existente, o comando correto em SQL é INSERT INTO ... SELECT ... FROM. A alternativa C segue exatamente essa sintaxe: insere na tabela cliente os dados selecionados da tabela filiado, com mapeamento explícito das colunas.
A banca testa o conhecimento da sintaxe do comando INSERT com subconsulta, um tópico fundamental de SQL.
Alternativa A — ❌ Incorreta
A sintaxe COPY FROM ... TO ... não é um comando SQL padrão para copiar dados entre tabelas. O comando COPY existe em alguns SGBDs (ex.: PostgreSQL) para importação/exportação de arquivos, mas não para cópia direta entre tabelas no banco. Além disso, a estrutura da cláusula está incorreta para o propósito.
Alternativa B — ❌ Incorreta
Mesmo problema da alternativa A: uso de COPY TO ... FROM ... que não é a sintaxe adequada para a operação desejada. O correto é INSERT com SELECT.
Alternativa C — ✅ Correta ⟵ GABARITO
A sintaxe INSERT INTO tabela_destino (colunas) SELECT colunas FROM tabela_origem; é a forma padrão e amplamente suportada em SQL para copiar dados de uma tabela para outra, quando ambas já existem. Nesta alternativa, as colunas são mapeadas explicitamente: idFiliado para idCliente, nomeFiliado para nomeCliente, dataFiliacao para dataCadastroCliente. Como os tipos são compatíveis (inteiro, cadeia, data), a operação é válida.
Alternativa D — ❌ Incorreta
A sintaxe INSERT * TO cliente REFERENCES * FROM filiado KEEP CASCADE não existe em SQL. O asterisco não é usado dessa forma, e as palavras TO, REFERENCES, KEEP, CASCADE não pertencem a um comando INSERT válido. A cláusula REFERENCES é usada em definições de chave estrangeira, não em inserções.
Alternativa E — ❌ Incorreta
A sintaxe INSERT INTO cliente (colunas) FROM filiado(colunas) está incorreta. Faltou a cláusula SELECT. O comando INSERT ... SELECT exige a palavra SELECT antes do FROM. Sem o SELECT, a expressão não é reconhecida pelo SQL.
NÃO CAIA NESSA!
Decore a estrutura padrão: INSERT INTO destino (colunas_destino) SELECT colunas_origem FROM origem; Esse padrão aparece com frequência em questões de SQL, principalmente para cópia entre tabelas já existentes. Muita atenção para não confundir com outras cláusulas como COPY, INTO sem SELECT, ou uso incorreto de *. Na dúvida, lembre-se que a cópia de dados exige um SELECT para fonte dos dados.