Pular para o conteúdo principal

Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023

Banco de DadosConsultas e Comandos em SQL
Código
vu195959
Banca
VUNESP
Órgão
CIJUN
Ano
2023
Cargo
Ana ( )
Considere os seguintes dois comandos emitidos a partir do sistema gerenciador de banco de dados MySQL v8.0. (a) SELECT LEAST (6, 2) e (b) SELECT COALESCE (NULL, 5)   Esses dois comandos terão como resultado, respectivamente,
  1. A(a) 2 e (b) 5.
  2. B(a) 2 e (b) NULL.
  3. C(a) 6,2 e (b) 5.
  4. D(a) 6 e (b) NULL.
  5. E(a) 6,2 e (b) 5.0.
Revelar gabarito e comentário

GabaritoA — (a) 2 e (b) 5.

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

Funções LEAST e COALESCE no MySQL

Gabarito: letra A. A função LEAST(6, 2) retorna o menor valor entre os argumentos, ou seja, 2; a função COALESCE(NULL, 5) retorna o primeiro valor não nulo da lista, ou seja, 5. Essas são as definições padrão dessas funções no MySQL 8.0.

A questão cobra duas funções de uso comum em SQL, mas que frequentemente geram confusão. Vamos entender cada uma a fundo.

LEAST é uma função que recebe uma lista de valores e retorna o menor deles. É o oposto da função GREATEST, que retorna o maior. A comparação é feita seguindo as regras de ordenação do tipo de dado dos argumentos. No caso de LEAST(6, 2), comparando os números 6 e 2, o menor é 2. É importante notar que a função retorna um único valor, não uma lista — a alternativa C, que sugere "6,2", confunde o retorno da função com a própria lista de argumentos.

COALESCE é uma função que recebe uma lista de valores e retorna o primeiro valor não nulo (NOT NULL) da lista. Ela é extremamente útil para tratar valores nulos em consultas, substituindo-os por um valor padrão. No caso de COALESCE(NULL, 5), o primeiro argumento é NULL, então a função avança para o próximo, que é 5, e o retorna. Se todos os argumentos fossem NULL, a função retornaria NULL.

A pegadinha clássica desta questão é confundir o comportamento do COALESCE com o de outras funções de tratamento de nulos, como IFNULL (que só aceita dois argumentos) ou NULLIF (que compara dois valores). Outra confusão comum é achar que COALESCE retorna NULL quando o primeiro argumento é NULL, mas a função foi projetada exatamente para evitar isso, percorrendo a lista até encontrar um valor não nulo.

Guarde a distinção central: LEAST trabalha com a ordem dos valores (menor vs. maior), enquanto COALESCE trabalha com a presença de valores (nulo vs. não nulo). É nessa fronteira que as alternativas se dividem.

Alternativa A — ✅ Correta ⟵ GABARITO

A alternativa afirma que LEAST(6, 2) retorna 2 e COALESCE(NULL, 5) retorna 5. Isso está exatamente correto: LEAST retorna o menor valor entre os argumentos (2), e COALESCE retorna o primeiro valor não nulo (5).

Alternativa B — ❌ Incorreta

A alternativa afirma que COALESCE(NULL, 5) retorna NULL. Isso está errado. A função COALESCE foi criada justamente para retornar o primeiro valor não nulo da lista. Como o segundo argumento é 5 (não nulo), o resultado é 5, não NULL. O erro aqui é achar que a função simplesmente retorna o primeiro argumento, ignorando o tratamento de nulos.

Alternativa C — ❌ Incorreta

A alternativa afirma que LEAST(6, 2) retorna "6,2". Isso está errado. A função LEAST retorna um único valor — o menor da lista —, não a lista de argumentos. O resultado de LEAST(6, 2) é o número 2. A alternativa confunde o retorno da função com a própria lista de argumentos passada a ela.

Alternativa D — ❌ Incorreta

A alternativa afirma que LEAST(6, 2) retorna 6 e COALESCE(NULL, 5) retorna NULL. Ambos os resultados estão errados. LEAST retorna o menor valor (2), não o maior (6). COALESCE retorna o primeiro valor não nulo (5), não NULL. A alternativa inverte o comportamento das duas funções.

Alternativa E — ❌ Incorreta

A alternativa afirma que LEAST(6, 2) retorna "6,2" e COALESCE(NULL, 5) retorna 5.0. O primeiro resultado está errado, como já explicado: LEAST retorna um único valor (2), não a lista. O segundo resultado, 5.0, também está incorreto: o MySQL retorna o valor inteiro 5, não um decimal 5.0, pois os argumentos são inteiros. A alternativa mistura os erros das alternativas C e B.

NÃO CAIA NESSA!

A banca explora a confusão entre o que cada função faz: LEAST seleciona o menor valor (não o maior, não a lista), e COALESCE seleciona o primeiro não nulo (não o primeiro argumento, não NULL). Ao ver LEAST, muitos candidatos pensam em "maior" por associação com GREATEST; ao ver COALESCE, pensam que NULL "contamina" o resultado. Com treino, você enxerga essas trocas de longe 💪.

PEGA ESSA DICA!

Para fixar, compare as funções em uma tabela:

Função

O que faz

Exemplo

Resultado

LEAST(a, b, ...)

Retorna o menor valor

LEAST(6, 2)

2

GREATEST(a, b, ...)

Retorna o maior valor

GREATEST(6, 2)

6

COALESCE(a, b, ...)

Retorna o primeiro não nulo

COALESCE(NULL, 5)

5

IFNULL(a, b)

Retorna b se a for nulo (MySQL)

IFNULL(NULL, 5)

5

NULLIF(a, b)

Retorna NULL se a = b, senão a

NULLIF(5, 5)

NULL

Gabarito: letra A

Link permanente: /questoes/vu195959