Limit the rows that are retrieved by a query

Neste post iremos aprender ou revistar o tópico da certificação sobre limitar as linhas da nossa query. Isso é feito através da cláusula WHERE, sem ele todas as linhas da tabela serão retornadas no SELECT, ou apagadas pelo DELETE  e etc.

Devemos sempre nos lembrar que qualquer query poderá ser perigosa sem o uso do where, apesar dele ser opcional. No SELECT poderemos travar o banco de dados pelo trabalho enorme que ele poderá fazer caso a tabela seja muito grande, ou apagar/atualizar mais dados do que o desejado, ou seja, todos!

Vamos ver a cara do SELECT com a cláusula WHERE:

SELECT *|{[DISTINCT] column|expression [ alias ],…} FROM table [WHERE condition(s) ];

Podemos perceber que o WHERE vem depois do FROM e é seguida por uma condição, a condição determina para cada linha da tabela se é TRUE ou FALSE,  caso seja verdadeira ela será retornada, caso contrário a linha não será retornada. A condição é formada por duas expressões juntamente com um operador de comparação, que pode ser de igualdade ou desigualdade, lembrando que as duas expressões devem ser do mesmo tipo de dados, mas isso nem sempre acontece e poderá executar corretamente, como no caso onde o Oracle faz uma conversão automática, mas não é recomendado. As colunas referenciadas pelo WHERE não são obrigadas a estar na lista de seleção. Vamos dar alguns exemplos agora de como podemos utilizar o WHERE junto com os seus operadores:

Exemplos de WHERE

Exemplos de WHERE

Na imagem acima podemos perceber 3 exemplos. O primeiro que mostramos todos os empregos da schema HR com salário mínimo acima de 10000. No segundo exemplo mostramos empregados com o salário maior do que o seu código vezes 100. E no último exemplo podemos perceber países que estão na region_id 3.

Podemos utilizar mais de uma condição no WHERE com os operadores booleanos AND e OR. Temos também o operador NOT que inverte a afirmativa, podendo até mesmo ser utilizado sem outros operadores. Lembrando que na utilização de vários desses operadores booleanos existe uma precedência. Primeiro é considerado o NOT depois o AND  e por último o OR.

Vamos ver um operador chamado LIKE agora que é muito poderoso ao pesquisar por caracteres com a utilização de WILDCARDS. Existem dois wildcards que são o % e o _. Ao utilizar o wildcard “_”, ele pode significar QUALQUER carácter. Bastante útil quando podemos pesquisar por um nome que pode começar com qualquer letra por exemplo. Já o wildcard “%” significa qualquer carácter em qualquer quantidade. vamos ver um exemplo de ambos:

Exemplos de LIKE com WILDCARS

Exemplos de LIKE com WILDCARS

Na primeira query retornamos todos os sobrenomes que tem qualquer letra como sendo a primeira e depois a combinação “ing”. Já no segundo exemplo pesquisamos por sobrenomes que terminam com a letra “r”, independentemente de quais e quantas letras venham anteriormente. Isso pode ser bastante poderoso nas pesquisas, lembrando que podemos utilizar os dois wildcards na mesma pesquisa e quantas vezes for necessário. Um cuidado que devemos sempre ter é de usar o wildcard depois do LIKE, caso seja utilizado antes esses caracteres especiais serão considerados como caracteres literais. E se caso a gente queira pesquisar algo que seja um simbolo de % ou _ no nosso LIKE? Para fazer com que esses caracteres sejam considerados como literais e não como wildcards, devemos utilizar um carácter de escape. Veja um exemplo:

 

SELECT * FROM employees WHERE first_name LIKE ‘Ad\_%’ ESCAPE ‘\’;

 

No exemplo acima, pesquisamos por empregados que tenham um nome começando com “Ad_”. É bom saber também que o carácter de escape pode ser qualquer um e não apenas o “\”.

 

Existem mais dois operadores que irei falar, o IN e o BETWEEN. No IN podemos utilizar vários valores em uma mesma comparação, economizando assim vários ORs. E no BETWEEN comparamos com uma faixa de valores, economizando assim um AND com os operadores >= e <=. Vamos ver mais um exemplo antes de terminar esse post.

in_between

No primeiro exemplo recuperamos funcionários com salários entre 10000 e 12000, lembrando que ambas as extremidades também são consideradas. E no segundo exemplo retornamos funcionários que trabalham no departamento_id 10 ou 20 ou 90.

E para finalizarmos o post, como fazemos para pesquisarmos pode valores NULL ou que não sejam NULL? Qualquer comparação que fizemos com valores NULL retornará false, ou seja, nenhuma linha será retornada. Caso o desejado seja retornar linhas em que uma coluna tenha ou não tenha valores NULL, devemos utilizar o IS NULL ou IS NOT NULL.

Anúncios

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Marcado com: , , , , , , , , , , ,
Publicado em Sem categoria

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

Esse Blog é reconhecido pela
Certificações
Sou articulista

Clique para seguir este blog e receber notificações via email de novos posts.

Tércio Costa

Tércio Costa

Meu nome é Tércio Costa, sou formado em Ciências da Computação pela UFPB, tenho a certificação Oracle SQL Expert e OCP PL/SQL, mantendo um blog reconhecido pela OTN(oraclepress.wordpress.com), no qual também publico artigos técnicos no portal OTN, no portal http://www.profissionaloracle.com.br/gpo e na revista SQL Magazine. Além de tudo isto sou um Oracle ACE Associate por estar sempre contribuindo para a comunidade com um bom nível de expertise.

Links Pessoais

Serviços verificados

Visualizar Perfil Completo →

Total de Visualizações da Página
  • 138.077 Visualizações
%d blogueiros gostam disto: