MENU

terça-feira, 5 de junho de 2012

SQL 11g stricting and Sorting Data





Este Post 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;

Nenhum comentário:

Postar um comentário