Esse capitulo trata de duas clausulas do SELECT, o WHERE (restrição) e o ORDER BY (ordenação);

Curiosidades:

  • O WHERE também pode/deve ser usado com o UPDATE e o DELETE;
  • O WHERE pode referenciar qualquer coluna da tabela, mesmo não estando no SELECT;
  • Na clausula WHERE podemos usar comparação com expressões, dois campos da própria tabela junto com os operadores ( = , >= , > , <= , < , != OU OU ^= , IN , LIKE);
  • As buscas em Oracle são Case Sentive, ou seja, ‘Teste’ ‘TESTE’;
  • Nas buscas com LIKE podemos usar dois simbolos: % e o _, o primeiro pega tudo após a utilização e o segundo somente uma posição, exemplo: LIKE ‘TE%’ / LIKE ‘TEST_’, em ambos traz o resultado (se tiver na tabela) TESTE;
  • Select 'TESTE'
    From Dual
    Where 'TESTE' Like 'TEST_';

    Select 'TESTE'
    From Dual
    Where 'TESTE' Like 'T_';
    -- Vazio

    Select 'TESTE'
    From Dual
    Where 'TESTE' Like 'T%';

  • Os operadores logicos do WHERE são as condições AND e OR, que ainda podem ser acrescidas de NOT, negação;
  • A ordem de precedência dos operadores logicos são: NOT, AND e OR;
    Se existir os parentestes ( ) ele será o primeiro de todos na ordem de precedência;
  • O NULL é a ausência de valor, as clusulas para serem usadas com NULL são IS NULL ou IS NOT NULL, exemplo:
  • Select 'TESTE'
    From Dual
    Where '' Is Null;

    Select 'TESTE'
    From Dual
    Where '' Is Not Null;

  • O ORDER BY pode ser referenciado pelo NOME_DA_COLUNA ou mais de um separado por virgula, pode ou não utilizar ASC ou DESC (default é ASC);
  • Dentro do ORDER BY pode ser utilizado Expressões ou ALIAS ou Posição e/ou a combinação desses;
  • Select 'TESTE'
    From Dual
    Order By 1;

    Select 'TESTE' As a
    From Dual
    Order By a Desc;

    Select 'TESTE'
    From Dual
    Order By 'TESTE' Asc;

  • O ORDER BY com Null sempre que ele existir será no final do SELECT, exemplo:
  • Select *
    From (Select 'TESTE'
    From Dual
    Union All
    Select ''
    From Dual
    Union All
    Select ''
    From Dual
    Union All
    Select 'TESTE2'
    From Dual)
    Order By 1 Asc;

    Questões:

    1 –
    Os SQLs abaixo executam?
    Select ‘TESTE’
    From Dual
    Where ‘TESTE’ = Null;

    Select ‘TESTE’
    From Dual
    Where Null = Null;

    SIM NAO
    NAO NAO
    SIM SIM
    NAO SIM

    Respostas no próximo post.

    Book: SQL Certified Expert Exam Guide, Steve O’Hearn pela Oracle Press
    Link Book na Amazon

    Att,
    capin