Com relação à tabela descrita anteriormente, analise o coman...

Próximas questões
Com base no mesmo assunto
Q1846178 Banco de Dados

Atenção: para resolver a questão a seguir, considere a estrutura e a instância da tabela IMB exibida abaixo. 


A            B

    2         NULL

3            3

4            3

4            2

NULL     1

5            0

Com relação à tabela descrita anteriormente, analise o comando SQL a seguir.


        select *

        from IMB

        where A is null and B = 2 or B = 3


Assinale o resultado exibido quando esse comando é executado.

Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A

A solução desta questão envolve o entendimento de como a cláusula WHERE funciona no SQL e a maneira como os operadores lógicos AND e OR são avaliados.

Na query fornecida, estamos pesquisando na tabela IMB por registros onde A é nulo (NULL) e o valor de B é igual a 2, ou onde B é igual a 3. A ausência de parênteses na condição da cláusula WHERE implica que a lógica segue a precedência padrão de operadores: o operador AND tem precedência sobre o operador OR, ou seja, o filtro A IS NULL AND B = 2 será avaliado em conjunto, e então o resultado será combinado com o filtro B = 3 utilizando o operador OR.

A condição A IS NULL AND B = 2 não é verdadeira para nenhum registro na tabela IMB. Entretanto, a condição B = 3 é verdadeira para dois registros:

  • 3 | 3
  • 4 | 3

Portanto, esses dois registros satisfazem a condição da cláusula WHERE e são retornados pelo comando SQL:

3 | 3

4 | 3

Esta é a razão pela qual a Alternativa A está correta e as demais estão incorretas.

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

"A is null and B = 2" -> 0 registro

OR

"B = 3" -> 2 registros (GAB A)

Se alguém puder comentar como eu separo

where A is null and B = 2 or B = 3

Fiquei na duvida se era

where A is null AND (B = 2 or B = 3)

ou

(where A is null AND B = 2) or B = 3

GAB. A

Pegadinha da boa nesta questão

Vou quebrar o comando para entender melhor.

select * from IMB

where A is null and B = 2 // essa é a primeira cláusula a ser analisada A nulo E (AND) B = 2 (nenhuma opção)

or B =3; // essa é a segunda parte B = 3, neste caso duas opções.

Cuidado, pois se o comando fosse

where A is null and (B = 2 OR B = 3) a resposta seria vazio (nenhuma condição satisfeita)

  1. Arithmetic operators
  2. Concatenation operator
  3. Comparison conditions
  4. IS [NOT] NULL, LIKE, [NOT] IN
  5. [NOT] BETWEEN
  6. Not equal to
  7. NOT logical condition
  8. AND logical condition
  9. OR logical condition

Fonte: https://stackoverflow.com/questions/1241142/sql-logic-operator-precedence-and-and-or

Me pegou kkkk. Na prova pra valer eu te pego danada!

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo