Pular para o conteúdo principal

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

Banco de DadosMySQL
Código
qq905448
Banca
FUNDATEC
Órgão
Prefeitura de São João da Urtiga - RS
Ano
2023
Nível
Médio
Cargo
Técnico em Informática
Usando as linguagens de consulta de dados (DQL), analise a tabela FILM criada dentro do banco de dados MySQL abaixo e assinale a alternativa que tem o código em SQL que responde à pergunta: Qual a quantidade de filmes que começam com a letra “A ”? Utilize a coluna TITLE para filtrar o filme.Imagem associada para resolução da questão
  1. ASELECT COUNT(FILM_ID) AS QTD_FILME FROM FILM WHERE TITLE LIKE 'A%'
  2. BSELECT COUNT(FILM_ID) AS QTD_FILME FROM FILM WHERE TITLE LIKE '%A%'
  3. CSELECT COUNT(*) AS QTD_FILME FROM FILM WHERE TITLE LIKE '%A'
  4. DSELECT COUNT(DISTINCT TITLE) AS QTD_FILME FROM FILM WHERE TITLE = 'A
  5. ESELECT * FROM FILM WHERE DESCRIPTION = 'A%'
Revelar gabarito e comentário

GabaritoA — SELECT COUNT(FILM_ID) AS QTD_FILME FROM FILM WHERE TITLE LIKE 'A%'

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

Operador LIKE e funções de agregação no MySQL

Gabarito: letra A. A consulta correta para contar quantos filmes começam com a letra "A" é SELECT COUNT(FILM_ID) AS QTD_FILME FROM FILM WHERE TITLE LIKE 'A%', pois o operador LIKE com o curinga % no final do padrão 'A%' filtra exatamente os títulos que iniciam com a letra "A", e a função COUNT(FILM_ID) conta as linhas resultantes. As demais alternativas erram na posição do curinga, no uso de COUNT(*) sem filtro adequado, na comparação com = ou na seleção de colunas incorretas.

O operador LIKE é utilizado em SQL para buscar padrões em colunas de texto, permitindo a comparação com parte de uma string. Ele é sempre usado em conjunto com dois curingas (wildcards): o %, que substitui zero ou mais caracteres, e o _, que substitui exatamente um caractere. A posição desses curingas no padrão define o que será filtrado: 'A%' encontra strings que começam com "A", '%A' encontra strings que terminam com "A", e '%A%' encontra strings que contêm "A" em qualquer posição. Essa distinção é o coração da questão — a banca explora exatamente a confusão entre "começa com" e "contém".

A função COUNT() é uma função de agregação que retorna o número de registros de uma seleção. Ela pode ser usada de duas formas principais: COUNT(*) conta todas as linhas do resultado, incluindo aquelas com valores nulos, enquanto COUNT(coluna) conta apenas as linhas onde a coluna especificada não é nula. No contexto da questão, COUNT(FILM_ID) é adequado porque FILM_ID é a chave primária da tabela (não pode ser nula), então o resultado é idêntico ao de COUNT(*), mas semanticamente mais preciso por contar os filmes.

Na prática, imagine uma tabela FILM com os títulos: "A Clockwork Orange", "Avatar", "The Godfather", "Amélie" e "Casablanca". A consulta WHERE TITLE LIKE 'A%' retornaria apenas "A Clockwork Orange", "Avatar" e "Amélie" — três filmes. Já WHERE TITLE LIKE '%A%' retornaria também "Casablanca" (porque contém "a" no final), e WHERE TITLE LIKE '%A' retornaria apenas "Casablanca" (porque termina com "a"). Essa diferença prática mostra como a posição do curinga altera completamente o resultado.

A pegadinha clássica desta questão é trocar o padrão 'A%' (começa com A) por '%A%' (contém A) ou '%A' (termina com A). O candidato que não domina a semântica dos curingas tende a marcar a alternativa B, que conta todos os filmes que têm a letra "A" em qualquer posição do título — um resultado muito mais amplo e incorreto para a pergunta feita. Além disso, a alternativa D usa o operador = em vez de LIKE, o que buscaria apenas títulos exatamente iguais a "A", e a alternativa E seleciona a coluna DESCRIPTION em vez de TITLE, fugindo completamente do que foi pedido.

Guarde a fronteira entre os padrões 'A%', '%A%' e '%A': é exatamente nela que as alternativas se dividem. A pergunta "começam com a letra A" exige o curinga % apenas no final do padrão.

Critério

Alternativa A (✅ Correta)

Alternativa B (❌)

Alternativa C (❌)

Alternativa D (❌)

Alternativa E (❌)

Padrão de filtro

LIKE 'A%' — começa com "A"

LIKE '%A%' — contém "A" em qualquer posição

LIKE '%A' — termina com "A"

= 'A' — título exatamente igual a "A"

= 'A%' — descrição literal "A%"

Coluna usada

TITLE

TITLE

TITLE

TITLE

DESCRIPTION

Função de agregação

COUNT(FILM_ID) — conta filmes

COUNT(FILM_ID) — conta filmes

COUNT(*) — conta linhas

COUNT(DISTINCT TITLE) — conta títulos únicos

Nenhuma (SELECT *)

Atende à pergunta?

Sim — conta filmes que começam com "A"

Não — inclui filmes com "A" no meio/final

Não — inverte o critério (termina com "A")

Não — busca apenas título "A"

Não — coluna errada e sem contagem

Alternativa A — ✅ Correta ⟵ GABARITO

A consulta SELECT COUNT(FILM_ID) AS QTD_FILME FROM FILM WHERE TITLE LIKE 'A%' está correta porque:

  • COUNT(FILM_ID) conta o número de filmes (linhas) onde FILM_ID não é nulo — como é chave primária, conta todas as linhas filtradas;

  • WHERE TITLE LIKE 'A%' filtra apenas os títulos que começam com a letra "A", pois o curinga % no final substitui qualquer sequência de caracteres após o "A";

  • AS QTD_FILME dá um nome legível à coluna de resultado.

Essa é a única alternativa que combina corretamente a função de contagem com o padrão de filtro adequado à pergunta.

Alternativa B — ❌ Incorreta

A consulta SELECT COUNT(FILM_ID) AS QTD_FILME FROM FILM WHERE TITLE LIKE '%A%' está incorreta porque o padrão '%A%' filtra títulos que contêm a letra "A" em qualquer posição, não apenas os que começam com "A". Isso incluiria filmes como "Casablanca" ou "The Godfather" (que têm "a" no meio), inflando o resultado. O erro é a posição do curinga % antes do "A" — para "começa com", o curinga deve estar apenas no final.

Alternativa C — ❌ Incorreta

A consulta SELECT COUNT(*) AS QTD_FILME FROM FILM WHERE TITLE LIKE '%A' está incorreta por dois motivos:

  • O padrão '%A' filtra títulos que terminam com a letra "A", não os que começam — inverte completamente o critério da pergunta;

  • Embora COUNT(*) seja funcionalmente equivalente a COUNT(FILM_ID) neste caso (pois FILM_ID é chave primária e nunca é nulo), o filtro errado torna a consulta inválida para a pergunta.

O erro central é o curinga % no início do padrão, que muda o significado de "começa com" para "termina com".

Alternativa D — ❌ Incorreta

A consulta SELECT COUNT(DISTINCT TITLE) AS QTD_FILME FROM FILM WHERE TITLE = 'A' está incorreta porque:

  • Usa o operador = em vez de LIKE, o que busca apenas títulos exatamente iguais a "A" — não títulos que começam com "A";

  • COUNT(DISTINCT TITLE) conta títulos únicos, o que é desnecessário e não atende à pergunta (que pede a quantidade de filmes, não de títulos distintos);

  • O padrão 'A' sem curingas não captura títulos como "Avatar" ou "Amélie".

O operador = faz comparação exata, enquanto LIKE é o operador correto para busca de padrões com curingas.

Alternativa E — ❌ Incorreta

A consulta SELECT * FROM FILM WHERE DESCRIPTION = 'A%' está incorreta porque:

  • Seleciona a coluna DESCRIPTION em vez de TITLE, ignorando a instrução explícita do enunciado de usar a coluna TITLE para filtrar;

  • Usa o operador = em vez de LIKE, tratando 'A%' como uma string literal (buscaria descrições exatamente iguais a "A%") em vez de um padrão;

  • SELECT * retorna todas as colunas, não uma contagem — a pergunta pede a quantidade de filmes, não os registros.

Esta alternativa mistura vários erros: coluna errada, operador errado e ausência de função de agregação.

NÃO CAIA NESSA!

A banca adora trocar a posição do curinga % para confundir. Na alternativa B, o padrão '%A%' parece correto à primeira vista, mas conta filmes que contêm "A" em qualquer lugar, não os que começam com "A". Na alternativa C, o padrão '%A' inverte para "termina com". A regra de ouro: para "começa com X", use LIKE 'X%' — curinga apenas no final. Com treino, você enxerga essas trocas de longe 💪.

PEGA ESSA DICA!

Na prova, quando a pergunta usar "começa com", "termina com" ou "contém", associe imediatamente à posição do curinga: começa com → 'X%'; termina com → '%X'; contém → '%X%'. E lembre-se: COUNT(*) conta todas as linhas, COUNT(coluna) conta as não nulas — para chave primária, são equivalentes. Se a alternativa usar = em vez de LIKE, desconfie: = busca valor exato, não padrão.

Gabarito: letra A

Link permanente: /questoes/qq905448