Questão de Banco de Dados — Consultas e Comandos em SQL — VUNESP 2023
- Código
- vu195959
- Banca
- VUNESP
- Órgão
- CIJUN
- Ano
- 2023
- Cargo
- Ana ( )
- A(a) 2 e (b) 5.
- B(a) 2 e (b) NULL.
- C(a) 6,2 e (b) 5.
- D(a) 6 e (b) NULL.
- E(a) 6,2 e (b) 5.0.
GabaritoA — (a) 2 e (b) 5.
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.
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).
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.
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.
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.
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.
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 💪.
Para fixar, compare as funções em uma tabela:
Função | O que faz | Exemplo | Resultado |
|---|---|---|---|
| Retorna o menor valor |
| 2 |
| Retorna o maior valor |
| 6 |
| Retorna o primeiro não nulo |
| 5 |
| Retorna |
| 5 |
| Retorna NULL se |
| NULL |
Gabarito: letra A
Link permanente: /questoes/vu195959