Pular para o conteúdo principal

Questão de Banco de Dados — SQL — VUNESP 2024

Banco de DadosSQL
Código
vu086439
Banca
VUNESP
Órgão
SAAE de Aparecida - SP
Ano
2024
Nível
Superior
Cargo
Analista de Tecnologia da Informação
Sejam duas variáveis booleanas var1 e var2, declaradas por meio do PL/SQL do sistema gerenciador de bancos de dados Oracle (21c). Considerando que var1 tenha o valor NULL e var2 tenha o valor FALSE, o resultado de cada uma das seguintes expressões será:(i) var1 AND var2; (ii) var1 OR var2; (iii) NOT(var1)
  1. A(i) TRUE; (ii) TRUE; (iii) FALSE.
  2. B(i) FALSE; (ii) TRUE; (iii) NULL.
  3. C(i) FALSE; (ii) NULL; (iii) NULL.
  4. D(i) NULL; (ii) NULL; (iii) TRUE.
  5. E(i) NULL; (ii) FALSE; (iii) TRUE.
Revelar gabarito e comentário

GabaritoC — (i) FALSE; (ii) NULL; (iii) NULL.

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

Lógica booleana de três estados em PL/SQL (Oracle)

Gabarito: letra C. Em PL/SQL, assim como no SQL padrão, a lógica booleana é trivalente (TRUE, FALSE, NULL). NULL representa um valor desconhecido. Quando um dos operandos é NULL, o resultado segue regras específicas:

  • AND: se um operando é FALSE, o resultado é FALSE; caso contrário, se um é TRUE e o outro NULL, resulta NULL; se ambos NULL, NULL.

  • OR: se um operando é TRUE, o resultado é TRUE; caso contrário, se um é FALSE e o outro NULL, resulta NULL; se ambos NULL, NULL.

  • NOT: NOT(NULL) = NULL.

Aplicando:

  • (i) var1 AND var2: NULL AND FALSE = FALSE.

  • (ii) var1 OR var2: NULL OR FALSE = NULL.

  • (iii) NOT(var1): NOT(NULL) = NULL.

Portanto, a sequência é FALSE, NULL, NULL – exatamente a alternativa C.

AND
OR
NULL com TRUE
FALSE
NULL
NULL com FALSE
NULL
TRUE
LEVEL · soulevel.com.br

Alternativa A — ❌ Incorreta

Afirma (i) TRUE, (ii) TRUE, (iii) FALSE. Todos os três resultados estão incorretos: (i) não pode ser TRUE porque FALSE predomina no AND; (ii) não pode ser TRUE porque FALSE com NULL dá NULL; (iii) NOT(NULL) é NULL, não FALSE.

Alternativa B — ❌ Incorreta

Afirma (i) FALSE, (ii) TRUE, (iii) NULL. (ii) está errado: FALSE OR NULL = NULL, não TRUE. NOT(NULL) está correto como NULL, mas o erro em (ii) invalida a alternativa.

Alternativa C — ✅ Correta ⟵ GABARITO

(i) FALSE, (ii) NULL, (iii) NULL. Conforme explicado, cada resultado segue a lógica trivalente: NULL AND FALSE = FALSE (dominância do FALSE), NULL OR FALSE = NULL (FALSE não torna o NULL verdadeiro, permanece desconhecido), NOT(NULL) = NULL. É a única correspondente.

Alternativa D — ❌ Incorreta

Afirma (i) NULL, (ii) NULL, (iii) TRUE. (i) deveria ser FALSE, não NULL. (iii) NOT(NULL) = NULL, não TRUE. Apenas (ii) está correto.

Alternativa E — ❌ Incorreta

Afirma (i) NULL, (ii) FALSE, (iii) TRUE. (i) é FALSE, não NULL; (ii) é NULL, não FALSE; (iii) é NULL, não TRUE. Todos errados.

PEGA ESSA DICA!

Decore a tabela da lógica trivalente em SQL: AND e OR com NULL. AND só é TRUE se ambos TRUE; OR só é FALSE se ambos FALSE. A presença de NULL só altera o resultado quando o outro operando não é decisivo (TRUE no OR, FALSE no AND). Em expressões aninhadas, aplique parênteses e avalie da esquerda para a direita. Pratique com questões da VUNESP e CESPE, que costumam cobrar esse tema.

Gabarito: letra C.

Link permanente: /questoes/vu086439