Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — FCC 2024

Banco de DadosMySQL
Código
fc147225
Banca
FCC
Órgão
SEAD PI
Ano
2024
Cargo
Ana Gov ( )
Considere o código escrito em MySQL:    PREPARE instrucao FROM ' SELECT • FROM usuarios WHERE id ? ';  SET eusuariold = l ;  EXECUTE instrucao USING @usuariold;  ( I ) instrucao;    PREPARE cria uma instrução preparada chamada instrucao que seleciona usuários com um determinado id. O EXECUTE executa essa instrução usando o valor da variável eusuariold.   Para liberar a instrução preparada da memória utiliza-se, na lacuna I , o comando
  1. AUNCHAIN
  2. BDEALLOCATE PREPARE
  3. CRELEASE
  4. DSET FREE
  5. ERELEASE PREPARE
Revelar gabarito e comentário

GabaritoB — DEALLOCATE PREPARE

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

MySQL: instruções preparadas e liberação de memória

Gabarito: letra B. Para liberar uma instrução preparada no MySQL, o comando correto é DEALLOCATE PREPARE, que remove a instrução da memória do servidor. As demais alternativas (UNCHAIN, RELEASE, SET FREE, RELEASE PREPARE) não são comandos válidos do MySQL para essa finalidade.

Instruções preparadas (prepared statements) são um recurso do MySQL que permite preparar uma consulta SQL uma única vez e executá-la múltiplas vezes com diferentes parâmetros. Isso traz benefícios de desempenho (a consulta é compilada uma vez) e segurança (os parâmetros são tratados como dados, não como parte do SQL, prevenindo injeção de SQL). O ciclo de vida de uma instrução preparada envolve três etapas: PREPARE (cria e compila a instrução), EXECUTE (executa com os parâmetros fornecidos) e DEALLOCATE PREPARE (libera a memória).

No código do enunciado, a instrução é preparada com PREPARE instrucao FROM 'SELECT * FROM usuarios WHERE id = ?', onde o ? é um placeholder que será substituído pelo valor da variável @usuariold no momento da execução. O EXECUTE instrucao USING @usuariold executa a consulta com o valor da variável. Após a execução, a instrução permanece na memória até ser explicitamente liberada — é exatamente isso que o comando na lacuna I deve fazer.

A sintaxe correta para liberar é DEALLOCATE PREPARE nome_da_instrucao. Esse comando é o equivalente funcional do DROP PREPARE (que também é aceito como sinônimo). A instrução preparada fica disponível apenas para a sessão atual e é automaticamente liberada quando a sessão é encerrada, mas a boa prática é liberá-la explicitamente após o uso para evitar acúmulo de memória.

A pegadinha desta questão está em confundir o comando de liberação com termos de outros contextos: RELEASE e SET FREE lembram gerenciamento de memória de sistemas operacionais, UNCHAIN não existe no MySQL, e RELEASE PREPARE inverte a ordem correta dos termos. O candidato que conhece a sintaxe exata do MySQL não tem dificuldade, mas quem tenta deduzir pelo significado das palavras pode cair nas alternativas distratoras.

NÃO CAIA NESSA!

A banca explora a confusão entre o comando correto e termos que parecem fazer sentido no contexto de liberação de memória. RELEASE e SET FREE são termos genéricos de liberação, mas não são comandos SQL do MySQL. RELEASE PREPARE inverte a ordem dos termos — o correto é DEALLOCATE PREPARE. Memorize a sintaxe exata: DEALLOCATE PREPARE é o único comando válido.

  1. 1PREPARE (cria e compila)
  2. 2EXECUTE (executa com parâmetros)
  3. 3DEALLOCATE PREPARE (libera memória)
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

UNCHAIN não é um comando SQL do MySQL. Não existe nenhuma instrução com esse nome no MySQL para liberar instruções preparadas ou qualquer outro recurso. É um distrator puro, sem correspondência com a sintaxe do banco.

Alternativa B — ✅ Correta ⟵ GABARITO

DEALLOCATE PREPARE é o comando correto para liberar uma instrução preparada no MySQL. A sintaxe completa é DEALLOCATE PREPARE nome_da_instrucao, que remove a instrução da memória do servidor. É o comando que fecha o ciclo de vida da instrução preparada, iniciado com PREPARE e executado com EXECUTE.

Alternativa C — ❌ Incorreta

RELEASE não é um comando SQL do MySQL para liberar instruções preparadas. Embora a palavra "release" signifique "liberar" em inglês, o MySQL não utiliza esse termo como comando. O comando correto é DEALLOCATE PREPARE, não apenas RELEASE.

Alternativa D — ❌ Incorreta

SET FREE não é um comando SQL do MySQL. A expressão "set free" (liberar) pode parecer plausível, mas não existe nenhuma instrução com esse nome no MySQL. É um distrator que explora o significado semântico da palavra "liberar".

Alternativa E — ❌ Incorreta

RELEASE PREPARE inverte a ordem dos termos do comando correto. O MySQL utiliza DEALLOCATE PREPARE, não RELEASE PREPARE. A palavra "release" não é usada nesse contexto, e a ordem correta é "DEALLOCATE" seguido de "PREPARE".

Gabarito: letra B — o comando DEALLOCATE PREPARE é o único que libera corretamente uma instrução preparada no MySQL.

Link permanente: /questoes/fc147225