Pular para o conteúdo principal

Questão de Banco de Dados — MySQL — VUNESP 2023

Banco de DadosMySQL
Código
vu196122
Banca
VUNESP
Órgão
Pref Jaguariúna
Ano
2023
Cargo
Tec (Jaguariúna)
Considere o seguinte comando emitido por meio do sistema gerenciador de banco de dados MySQL (v. 8.0):   SELECT '\'teste';   A execução desse comando terá como saída:
  1. A\teste
  2. B\'teste
  3. Cteste
  4. D'\'teste
  5. E‘teste
Revelar gabarito e comentário

GabaritoE — ‘teste

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

Comportamento de escape de aspas no MySQL

Gabarito: letra E. No MySQL, a barra invertida (\) é o caractere de escape padrão dentro de strings. No comando SELECT '\'teste';, a sequência \' é interpretada como uma aspa simples literal, e não como o delimitador de fim da string. Portanto, a string resultante é 'teste (aspa simples seguida de "teste"), que é exibida como 'teste.

O MySQL, por padrão, utiliza a barra invertida como caractere de escape em strings. Isso significa que certas sequências de caracteres são interpretadas de forma especial: \' representa uma aspa simples literal, \\ representa uma barra invertida literal, \n representa uma nova linha, \t representa uma tabulação, entre outras. Essa é uma característica que difere do padrão SQL ANSI, que não define a barra invertida como escape, mas o MySQL a adota por padrão (embora seja possível alterar esse comportamento com a variável de sistema NO_BACKSLASH_ESCAPES).

Vamos analisar o comando passo a passo:

  1. A string começa com uma aspa simples: '.

  2. Em seguida, temos \'. O MySQL lê a barra invertida e sabe que o próximo caractere (a aspa simples) deve ser tratado como um caractere literal, não como o fim da string.

  3. Depois, temos teste.

  4. A string termina com outra aspa simples: '.

Portanto, o conteúdo da string é: aspa simples + "teste" = 'teste. Quando o MySQL exibe o resultado de um SELECT de uma string, ele mostra o conteúdo sem as aspas delimitadoras. Assim, a saída será 'teste.

A pegadinha aqui é que muitos candidatos podem pensar que a barra invertida é exibida literalmente, ou que a aspa simples escapada ainda é interpretada como delimitador. Mas o comportamento correto é que \' produz uma aspa simples literal, e a barra invertida não aparece na saída.

Para fixar: no MySQL, \' dentro de uma string delimitada por aspas simples resulta em uma aspa simples no valor da string. A barra invertida é consumida pelo processo de escape e não faz parte do resultado.

  1. 1Abre string com aspas simples
  2. 2\' vira aspa literal
  3. 3Barra é consumida
  4. 4Resultado: 'teste
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Apresenta \teste, mantendo a barra invertida na saída. Isso ocorreria se a sequência fosse \\teste (barra invertida escapada), mas no comando original a barra invertida é usada para escapar a aspa, não a si mesma. Portanto, a barra não aparece no resultado.

Alternativa B — ❌ Incorreta

Apresenta \'teste, incluindo tanto a barra quanto a aspa. Isso seria o resultado se a string fosse '\\'teste' (barra invertida literal seguida de aspa literal), mas não é o caso. No comando dado, a barra é o escape da aspa, então a barra é consumida.

Alternativa C — ❌ Incorreta

Apresenta teste, sem a aspa inicial. Isso ocorreria se a string fosse 'teste' sem o escape, mas o comando inclui \' no início, que produz uma aspa literal. Portanto, a aspa faz parte do resultado.

Alternativa D — ❌ Incorreta

Apresenta '\'teste, que é a representação literal do comando como texto, não o resultado da execução. O comando SELECT '\'teste'; é interpretado pelo MySQL, e a saída é o valor da string, não o comando em si.

Alternativa E — ✅ Correta ⟵ GABARITO

A saída é 'teste, exatamente o que a string contém após o processamento do escape. A aspa simples escapada (\') é convertida em uma aspa simples literal, e a barra invertida não é exibida. Portanto, o resultado é a aspa seguida de "teste".

NÃO CAIA NESSA!

A banca explora a confusão entre o caractere de escape e o caractere literal. Muitos candidatos podem achar que a barra invertida aparece na saída, ou que a aspa escapada ainda delimita a string. Lembre-se: no MySQL, \' dentro de uma string produz uma aspa simples literal, e a barra é consumida. Com treino, você reconhece esse padrão rapidamente.

Gabarito: letra E

Link permanente: /questoes/vu196122