Pular para o conteúdo principal

Questão de Banco de Dados — Outros SGBDs e Questões Mescladas — FGV 2023

Banco de DadosOutros SGBDs e Questões Mescladas
Código
fg161169
Banca
FGV
Órgão
Pref Niterói
Ano
2023
Cargo
Ana ( )
Observe o trecho do seguinte código escrito na linguagem GraphQL que utiliza um tipo de operação para inserir dados.   <tipo de operação> { insert_tarefa(objects: [{     titulo: "Aprender GraphQL" }])   {    returning {      id      criado_em    }   } }   Em GraphQL, o tipo de operação utilizada para inserir, atualizar ou apagar dados é o:
  1. Aquery;
  2. Bdirective;
  3. Cmutations;
  4. Dintrospection;
  5. Esubscriptions.
Revelar gabarito e comentário

GabaritoC — mutations;

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”.

GraphQL: tipos de operação

Gabarito: letra C. Em GraphQL, a operação utilizada para inserir, atualizar ou apagar dados é a mutation — o trecho do enunciado, com insert_tarefa, é exatamente uma mutation de escrita. As queries são para leitura, subscriptions para eventos em tempo real, directives para modificar a execução e introspection para consultar o esquema.

GraphQL é uma linguagem de consulta para APIs que define três tipos de operação principais: query (leitura), mutation (escrita) e subscription (assinatura de eventos em tempo real). Cada uma tem um papel específico e é declarada no corpo da requisição. A mutation é a operação que altera o estado do servidor — cria, atualiza ou deleta dados — e é exatamente o que o código do enunciado faz ao chamar insert_tarefa.

A sintaxe do trecho é típica de uma mutation: o nome da operação (insert_tarefa) recebe argumentos (objects: [...]) e retorna um bloco com os campos desejados (returning { id, criado_em }). Isso é o padrão de escrita em GraphQL, usado por servidores como Hasura ou Postgraphile.

A pegadinha da banca está em confundir os papéis: quem não conhece GraphQL pode achar que insert_tarefa é uma query, mas o verbo "insert" já denuncia que é uma mutation. Além disso, é comum confundir mutation com subscription, mas subscription é para notificações contínuas, não para escrita pontual.

Guarde a distinção central: query = leitura, mutation = escrita, subscription = tempo real. É nessa fronteira que as alternativas se separam.

1query
leitura de dados
2mutation
escrita (insert/update/delete)
3subscription
eventos em tempo real
4directive
modifica a execução
5introspection
consulta o esquema
GraphQL: tipos de operação
LEVELsoulevel.com.br
GraphQL: tipos de operação: query (leitura de dados); mutation (escrita (insert/update/delete)); subscription (eventos em tempo real); directive (modifica a execução); introspection (consulta o esquema)

Alternativa A — ❌ Incorreta

query é o tipo de operação para leitura de dados. No GraphQL, queries são usadas para buscar informações sem alterar o estado do servidor. O trecho do enunciado insere dados (insert_tarefa), o que é uma operação de escrita — portanto, não é uma query.

Alternativa B — ❌ Incorreta

directive é um recurso que permite modificar a execução de uma query ou mutation, como @include ou @skip. Não é um tipo de operação, mas um modificador aplicado a campos ou fragmentos. O enunciado pede o tipo de operação para escrita, que é mutation.

Alternativa C — ✅ Correta ⟵ GABARITO

mutation é o tipo de operação usado para inserir, atualizar ou apagar dados em GraphQL. O trecho do enunciado, com insert_tarefa, é uma mutation típica: recebe argumentos de escrita (objects) e retorna os dados alterados (returning). É exatamente o que a alternativa descreve.

Alternativa D — ❌ Incorreta

introspection é um recurso que permite consultar o esquema da API, ou seja, descobrir quais tipos, campos e operações estão disponíveis. Não é um tipo de operação para escrita de dados, mas uma capacidade do servidor GraphQL de descrever a si mesmo.

Alternativa E — ❌ Incorreta

subscription é o tipo de operação para assinar eventos em tempo real, recebendo atualizações contínuas do servidor. Não é usado para escrita pontual como inserir, atualizar ou apagar dados — isso é papel da mutation.

NÃO CAIA NESSA!

Para fixar, lembre-se do paralelo com SQL: query ≈ SELECT, mutation ≈ INSERT/UPDATE/DELETE, subscription ≈ triggers/notificações. Se o verbo da operação for de escrita (insert, update, delete), é mutation — não caia na pegadinha de achar que é query.

Gabarito: letra C

Link permanente: /questoes/fg161169