Julgue os seguintes itens, referentes a frameworks para cama...
Considerando que a consulta abaixo seja realizada em um SGBD Oracle, é correto afirmar que o valor 0 será mostrado na coluna salario quando um valor NULL for retornado.
SELECT nome, NVL(salario, 0), cidade
FROM empregado
WHERE salario IS NULL
ORDER BY nome;
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
Alternativa Correta: C (certo)
A questão em apreço aborda um conceito muito utilizado no âmbito dos bancos de dados Oracle, que é a função NVL. Esta função é utilizada para substituir valores NULL por um valor alternativo que o usuário especificar. A sintaxe da função NVL é NVL(expressão1, expressão2)
, onde expressão1 é o valor a ser verificado e expressão2 é o valor a ser retornado caso expressão1 seja NULL.
No cenário apresentado pela questão, o comando SQL realiza uma seleção dos empregados cujo salário é NULL. A função NVL é aplicada na coluna salario para garantir que, na apresentação dos resultados, ao invés de aparecer o valor NULL, seja mostrado o número 0. Portanto, quando o comando SELECT nome, NVL(salario, 0), cidade FROM empregado WHERE salario IS NULL ORDER BY nome;
é executado, a coluna salario exibirá o valor 0 para todos os registros que tiverem um valor NULL para o salário, atendendo assim ao comportamento esperado pela função NVL.
O conhecimento necessário para resolver essa questão envolve compreensão básica de comandos SQL, o entendimento do que é um valor NULL e como o Oracle trata esses valores, além do domínio das funções que permitem manipular e substituir valores NULL, como é o caso da função NVL. A habilidade em identificar o propósito e a aplicação correta da função NVL é essencial para profissionais que trabalham com bancos de dados, especialmente com o Oracle, onde essa função é amplamente utilizada.
Portanto, a justificativa para a alternativa correta está no entendimento correto do uso da função NVL, que efetivamente substituirá valores NULL pela constante 0 na coluna salario, validando a afirmação proposta na questão.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
Justificativa: O Comando precisaria usar uma renomeação "SALARIO" após o uso da função da seguinte forma:
SELECT nome, NVL(salario, 0) SALARIO, cidade
FROM empregado
WHERE salario IS NULL
ORDER BY nome;
O resultado da consulta original da questão não terá a coluna salario, pois a consulta retornará um nome genérico como resultado da função NVL. Exemplo de retorno genérico: column1.
Na minha opinião, faltou um recurso.
No exemplo contido na documentação da Oracle há a renomeação, veja:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions105.htm
Clark, em se tratando de Banca CESPE vamos ao que se pede exatamente na questão,ou seja, "é correto afirmar que o valor 0 será mostrado na coluna salario quando um valor NULL for retornado", o renomeação é algo opcional...
Errei por pensar exatamente igual ao colega clarck.
Se considerarmos apenas o resultado da consulta, fato é que não vai ter uma coluna "salario".
Também achei a questão difícil por pensar que poderia haver uma pegadinha aí com essa questão de não ter alias.
A função NVL( ) encontra-se disponível no sistema Oracle, mas não nos sistemas MySQL ou SQL Server. Esta função é utilizada para substituir o valor NULL por outro valor. É semelhante à função IFNULL no sistema MySQL e à função ISNULL no SQL Server.
SELECT SUM ( NVL (Sales,100)) FROM Sales_Data;
Certo
https://www.1keydata.com/pt/sql/sql-nvl.php
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo