Translate

segunda-feira, 24 de fevereiro de 2014

CLÁUSULA WHERE

A cláusula Where permite restringir a consulta SQL, trazendo somente os dados que interessam no momento.

A cláusula where utiliza operadores de comparação:

 x = y        verifica se x é igual a y

select * from employees
where employee_id = 207;





x > y        verifica se x é maior que y

select employee_id
      ,first_name
      ,job_id
      ,salary
from   employees 
where  salary > 9000;










x > =  y      verifica se x é maior ou igual a y

x <  y          verifica se x é menor que y

x <= y         verifica se x é menor ou igual a y

LIKE  usado para buscar uma cadeia de caracteres, mesmo que você não saiba parte dela.

O like pode ser usado com % quando por exemplo você quer trazer todos os registros cujo nome comecem com A:

select * from employees
where first_name like 'A%';








Para trazer todos os registros cujo nome contenha a string 'xand'

select * from employees
where first_name like '%xand%';







LIKE pode ser também utilizado com o caracter _

Vamos imaginar que alguem possa ter digitado Steven com e ou com i e você queira ter certeza que serão retornados todos os "Steven";

select * from employees
where first_name like 'Stev_n';









BETWEEN      permite verificar se y está entre x e z, pode ser usado com datas, números ou caracteres.

select employee_id
      ,first_name
      ,job_id
      ,salary
from   employees 
where  salary between 12000 and 17000;














IN      permite verificar se o valor de uma coluna está entre um conjunto de valores

select employee_id
      ,first_name
      ,job_id
      ,salary
from   employees 
where  job_id in ('AD_VP', 'MK_MAN', 'FI_MGR');









Caso seja necessário restringir a consulta em mais de uma condição, podem ser acrescentadas as palavras chaves and, or, not e is null

select employee_id
      ,first_name
      ,job_id
      ,salary
from   employees 
where  job_id in ('AD_VP', 'MK_MAN', 'FI_MGR')
and    salary >= 13000;








Vamos utilizar agora o mesmo caso acima, porém onde os cargos NÃO sejam AD_VP, MK_MAN e FI_MGR.  

select employee_id
      ,first_name
      ,job_id
      ,salary
from   employees 
where  job_id not in ('AD_VP', 'MK_MAN', 'FI_MGR')
and    salary >= 13000;








Utilizando o operador IS NULL, vamos buscar os dados onde os nomes dos funcionários comecem entre A e D e não recebam comissão 

select employee_id
      ,first_name
      ,job_id
      ,salary
      ,commission_pct
from   employees
where  first_name between 'A%' and 'D%' 
and    commission_pct is null;




Nenhum comentário:

Postar um comentário