Usando linguagem SQL para geração de relatórios - Parte 1
Usando linguagem SQL para geração de relatórios - Parte 2
Usando linguagem SQL para geração de relatórios - Parte 3
Usando linguagem SQL para geração de relatórios - Parte 4
Este artigo apresenta o uso de operadores para manipulação de conjuntos de dados que são especialmente úteis para filtragem dos dados: IN, LIKE, BETWEEN, EXISTS, ALL,SOME, ANY, UNION, UNION ALL, EXCEPT, INTERSECT, AND, OR, NOT. Neste sentido, este artigo discute o uso de operadores para filtragem de dados, já que o SQL vai muito além dos operadores matemáticos (=, <>, >, <, >=, <=).
Em que situação o tema é útil?
Na execução de qualquer consulta SQL que tenha a cláusula WHERE, o que ocorre praticamente em todas as consultas.
Resumo DevMan:
Condições de pesquisa são usadas em qualquer consulta que use um ou mais predicados na cláusula WHERE, isso é, expressões que retornam VERDADEIRO ou FALSO e que são usadas para filtrar dados. Provavelmente mais de 80% das declarações SQL que escrevemos usam predicados e, portanto, os operadores que iremos descrever aqui. Não importa se estamos escrevendo consultas de seleção, inserção, atualização ou exclusão. Havendo um ou mais predicados, lá estarão as condições de pesquisa. Neste contexto, neste quinto artigo da série o foco será nas condições de pesquisa usadas na cláusula WHERE e o impacto que elas têm sobre a performance.
Chegamos ao quinto artigo da série sobre criação de relatórios. Desta vez vamos falar das condições de pesquisa usadas na cláusula WHERE e o impacto que elas têm sobre a performance.
Como mencionei em todos os números anteriores desta série, este material foi criado a partir de uma palestra que apresentei sobre o uso do DB2. Porém, as condições de pesquisa que veremos aqui são padrão ANSI SQL e, portanto, estão (ou ao menos deveriam estar) implementadas em qualquer SGBD relacional.
Condições de pesquisa são usadas em qualquer consulta que use um ou mais predicados na cláusula WHERE, isso é, expressões que retornam VERDADEIRO ou FALSO e que são usadas para filtrar dados. Provavelmente mais de 80% das declarações SQL que escrevemos usam predicados e, portanto, os operadores que iremos descrever aqui. Não importa se estamos escrevendo consultas de seleção, inserção, atualização ou exclusão. Havendo um ou mais predicados, lá estarão as condições de pesquisa.
E como as três operações que geralmente mais impactam a performance de uma consulta são a junção de tabelas, o agrupamento e a filtragem de dados, fica fácil deduzir que é muito importante saber usar as condições de pesquisa adequadas.
A seguir, vamos estudar como usar e qual o impacto na performance dos operadores IN, LIKE, BETWEEN, EXISTS, ALL, SOME, ANY, UNION, UNION ALL, EXCEPT, INTERSECT, AND, OR, NOT.
Para isso, neste artigo, tratamos dos seguintes tópicos:
· Operadores matemáticos;
· Operador BETWEEN;
· Operadores AND e OR;
· Operadores IN e EXISTS;
· Operador LIKE;
· Operador NOT;
· Operadores UNION, UNION ALL;
· Operadores INTERSECT e EXCEPT;
· Operadores ALL, SOME, ANY;
· Otimizando predicados.
Para situarmos os recursos SQL que vamos estudar, é preciso ter uma base de dados como amostra. Usaremos neste artigo uma base com dados fictícios de demanda de produtos farmacêuticos. A Figura 1 mostra o modelo desta base.
Figura 1: Modelo de dados da base de exemplo
Assumimos neste artigo que o leitor já está familiarizado com conceitos básicos da linguagem SQL apresentados nos artigos anteriores desta série.
Os Operadores Matemáticos, que vimos lá no início de nossos estudos no primário, antiga 5º série, hoje 6º ano do ensino fundamental, são essenciais quando falamos em filtrar dados em consultas SQL.
Quando falamos de predicados, a primeira coisa que nos vem à cabeça são as expressões que usam operadores numéricos, como igual (=), maior (>), menor (<), maior ou igual (>=), menor ou igual (<=) e diferente (<>).
Na verdade, os SGBDs relacionais são muito bons para lidar com operadores matemáticos. Lamentavelmente, eles não resolvem 100% dos problemas que podemos encontrar e, portanto, muitas vezes precisamos usar outros operadores, como veremos ao longo deste artigo.
De qualquer modo, operadores matemáticos são muito úteis e fáceis de usar, além de suportarem outros tipos de dados além dos valores numéricos.
Vamos a um primeiro exemplo. Selecionar as transações envolvendo valores superiores a R$ 2.500,00. Usaremos o operador Maior Que (>), como mostra a Listagem 1.
Listagem 1: Usando o operador matemático maior que (>)
SELECT *
FROM tblDemanda T
WHERE ValorReal >= 2500;
A Listagem 2 mostra outro exemplo com o operador maior ou igual (>=), filtrando todos os dados cuja data é maior ou igual à data de hoje menos 30 dias. Em outras palavras, estamos filtrando todas as transações dos últimos 30 dias. Lembre-se que a operação de datas usada é padrão do DB2 e você deverá fazer as adaptações necessárias para o seu SGBD. Recomendo a leitura do artigo “Usando Datas em Consultas SQL”, citado na seção LEITURA RECOMENDADA.
Listagem 2: Usando o operador matemático maior ou igual (>=).
SELECT *
FROM tblDemanda T
WHERE Data >= (CURRENT_DATE - 30 DAYS);
Os demais operadores matemáticos são usados da mesma forma, então deixo o teste com os outros operadores aos cuidados do leitor mais curioso.
Operador BETWEEN
Este operador é muito simples e especifica uma faixa de resultados compreendida entre um limite inferior e um limite superior. Desta forma, ele funciona como se estivéssemos usando dois operadores matemáticos ao mesmo tempo: maior ou igual ao limite inferior ...
Confira outros conteúdos:
Black November
Desconto exclusivo para as primeiras 200 matrículas!
Pagamento anual
12x no cartão
De: R$ 69,00
Por: R$ 54,90
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- 12 meses de acesso
Pagamento recorrente
Cobrado mensalmente no cartão
De: R$ 79,00
Por: R$ 54,90 /mês
Total: R$ 658,80
Garanta o desconto
- Formação FullStack Completa
- Carreira Front-end I e II, Algoritmo e Javascript, Back-end e Mobile
- +10.000 exercícios gamificados
- +50 projetos reais
- Comunidade com + 200 mil alunos
- Estude pelo Aplicativo (Android e iOS)
- Suporte online
- Fidelidade de 12 meses
- Não compromete o limite do seu cartão
<Perguntas frequentes>
Nossos casos de sucesso
Eu sabia pouquíssimas coisas de programação antes de começar a estudar com vocês, fui me especializando em várias áreas e ferramentas que tinham na plataforma, e com essa bagagem consegui um estágio logo no início do meu primeiro período na faculdade.
Estudo aqui na Dev desde o meio do ano passado!
Nesse período a Dev me ajudou a crescer muito aqui no trampo.
Fui o primeiro desenvolvedor contratado pela minha
empresa. Hoje eu lidero um time de desenvolvimento!
Minha meta é continuar estudando e praticando para ser um
Full-Stack Dev!
Economizei 3 meses para assinar a plataforma e sendo sincero valeu muito a pena, pois a plataforma é bem intuitiva e muuuuito didática a metodologia de ensino. Sinto que estou EVOLUINDO a cada dia. Muito obrigado!
Nossa! Plataforma maravilhosa. To amando o curso de desenvolvimento front-end, tinha coisas que eu ainda não tinha visto. A didática é do jeito que qualquer pessoa consegue aprender. Sério, to apaixonado, adorando demais.
Adquiri o curso de vocês e logo percebi que são os melhores do Brasil. É um passo a passo incrível. Só não aprende quem não quer. Foi o melhor investimento da minha vida!
Foi um dos melhores investimentos que já fiz na vida e tenho aprendido bastante com a plataforma. Vocês estão fazendo parte da minha jornada nesse mundo da programação, irei assinar meu contrato como programador graças a plataforma.
Wanderson Oliveira
Comprei a assinatura tem uma semana, aprendi mais do que 4 meses estudando outros cursos. Exercícios práticos que não tem como não aprender, estão de parabéns!
Obrigado DevMedia, nunca presenciei uma plataforma de ensino tão presente na vida acadêmica de seus alunos, parabéns!
Eduardo Dorneles
Aprendi React na plataforma da DevMedia há cerca de 1 ano e meio... Hoje estou há 1 ano empregado trabalhando 100% com React!
Adauto Junior
Já fiz alguns cursos na área e nenhum é tão bom quanto o de vocês. Estou aprendendo muito, muito obrigado por existirem. Estão de parabéns... Espero um dia conseguir um emprego na área.
Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.