SóProvas


ID
723580
Banca
FCC
Órgão
TRT - 6ª Região (PE)
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

Predicados são elementos da linguagem SQL que especificam condições que podem ser avaliadas como "True", "False" ou "Null", no que é conhecido como lógica trivalente. Na lógica trivalente usada pela linguagem SQL tem-se

Alternativas
Comentários
  • A alternativa correta é a a.

    Se for criado um select da seguinte maneira:

    SELECT *
    FROM pessoas 
    WHERE idade > 20 and idade < 20

    Esse select retornará NULL (nenhum registro), porquanto se uma condição for verdadeira e outra falsa, a query nada retornará.
  • O retorno da query não tem a ver com o NULL de que fala a questão.
    SELECT * FROM Pessoa WHERE (idade > 20 AND idade < 20)

    A resolução dessa query se dá da seguinte forma: para cada tupla da tabela Pessoa , o atributo idade é verificado em relação à cláusula WHERE da consulta. Se a idade for maior que 20, vai dar TRUE na primeira e FALSE na segunda. TRUE and FALSE dá FALSE, logo essa tupla NÃO será incluída no resultado da query.

    True AND False é False desde que o mundo é mundo.

  • Deixei minha resposta para os demais assinantes do site que podem ter a mesma dúvida que eu tive.

    Pelo jeito que escreveu sua "réplica", já vi que daqui não sai nada de bom.
  • Pessoal, achei a questão bem curiosa. Fiz uns testes que pudessem me responder essa questão, pois até o livro do Navathe me deixou confuso sobre o assunto NULL (seção 8.5.1). Executei as seguintes queries:
    select TRUE from variaveis where  null is null  e obtive TRUE . Parece óbvio, certo? Então isso me dá respaldo para testar o seguinte:
    select true from variaveis where (id=1 AND id<1) is FALSE
    select true from variaveis where (id=1 AND id<1) is NULL
    Testando com somente um registro com id=1 no banco de dados, a primeira query retorna TRUE e a segunda não retorna nada. Confirma-se, empiricamente, que TRUE AND FALSE é FALSE. Concordam?
  • Questão vinda direto da wikipedia =/


    Texto que explica a resposta: ( http://pt.wikipedia.org/wiki/L%C3%B3gica_tern%C3%A1ria )

    A linguagem SQL implementa lógica ternárica como uma forma de lidar com o o conteúdo nulo de campos de registros, utilizando NULL para representar valores em falta num banco de dados. Se um campo não possui um valor definido, o SQL assume NULL, mas esse valor não é gravado no banco de dados. Entretanto, um valor em falta é diferente dum valor numérico zero (0) ou de uma cadeia de caracteres vazia (""). A comparação comNULL resulta num estado desconhecido chamado UNKNOWN. Por exemplo, a expressão SQL "Cidade = 'Porto Alegre'" retorna FALSE para um registro contendo "Rio de Janeiro" no campo Cidade, mas retorna UNKNOWN para um registro contendoNULL no mesmo campo.

    Usando a lógica ternária, o SQL consegue usar UNKNOWN para resolver expressões booleanas. Considerando a expressão "Cidade = 'Porto Alegre' OR Balanco < 0.0". Essa expressão retorna TRUE para qualquer registro contendo um valor negativo no campo Balanco. A mesma expressão retorna TRUE para qualquer registro contendo "Porto Alegre" no campo Cidade. Já FALSE é retornado somente para um registro contendo explicitamente uma cadeia diferente de "Porto Alegre" e cujo campo Balanco é explicitamente não negativo. Em qualquer outro caso, o retorno é UNKNOWN.

    Na linguagem de manipulação de dados do SQL, um retorno TRUE duma expressão inicia uma ação, enquanto UNKNOWN ou FALSE não iniciam ações. Dessa forma a lógica ternária é transformada em binária para o utilizador.

  • Eita.. Difícil engolir essa questão. Percebam que na própria wikipedia de onde foi "retirada" essa questão existe uma tabela verdade onde TRUE AND FALSE = FALSE e não UNKNOW.

    Essa questão é típica de alguém que elabora uma questão que não é exatamente da sua área, procura dificultar as coisas, lê, entende mal e manda ver... Tem que conferir se não teve o gabarito alterado ou foi anulada.
  • Segundo Silberschatz (pag. 46, 5a ed), "as comparações envolvendo nulos podem ocorrer dentro de expressões booleanas envolvendo operações e, ou, e não. Portanto, precisamos definir como as três operações booleanas lidam com o valor de verdade desconhecido:
    • e: (verdadeiro e desconhecido) = desconhecido; (falso e desconhecido) = falso; (desconhecido e desconhecido) = desconhecido.
    • or: (verdadeiro ou desconhecidi) = verdadeiro; (falso ou desconhecido) = desconhecido; (desconhecido ou desconhecido) = desconhecido.
    • não: (não desconhecido) = desconhecido."
    No meu entendimento e de acordo com a bibliografia (parte sublinhada transcrita), a alternativa E é a correta
  • Mais uma pérola da FCC.
    A questão tem duas respostas certas (LETRAS D e E). E a resposta do gabarito (Letra A) está errada.
    Na Wikipedia tem a tabela completa da lógica ternária: http://upload.wikimedia.org/wikipedia/en/2/2c/3VL_Truth_Table.png
    Testei no MySQL para verificar se a tabela está correta. E realmente os resultados obtidos batem com a tabela disponível na Wikipedia.


    a) SELECT True AND False; -- Null? Errado. RETORNA "0" (FALSE)
    b) SELECT True OR False;  -- Null? Errado. RETORNA "1" (TRUE)

    c) SELECT NOT Null;       -- True? Errado. RETORNA "NULL"
    d) SELECT True AND False; -- False? Verdadeiro. RETORNA "0" (FALSE)
    e) SELECT Null AND False; -- False? Verdadeiro. RETORNA "0" (FALSE)

    DEFINITIVAMENTE, NINGUÉM ENTROU COM RECURSO. NÃO TEM COMO UMA QUESTÃO DESSAS NÃO SER ANULADA!
  • True AND False = Null só depois de muita cachaça!!!!!!!!!!! Valha-me Deus!!!! Atenção quem está estudando, resposta A é resposta errAda!!!! Resposta certa é a D
  • Pessoal,
    Essa questão foi anulada
    http://br.groups.yahoo.com/group/timasters/message/169795

    Analista Judiciário – Área Apoio Especializado – Especialidade - Tecnologia da Informação (T20)
    Questão 44 tipo 1
    Questão 44 tipo 2
    Questão 45 tipo 3
    Questão 45 tipo 4
    Questão 46 tipo 5