A linguagem SQL é muito rica, com ela podemos realizar tarefas simples e complexas no banco de dados. O comando Select por exemplo pode ser usado de inúmeras formas e para as mais diversos tipos de consulta, como a geração de relatórios completos mesclando dados de várias tabelas, entre outras. Neste pequeno tutorial gostaria de mostrar alguns exemplos de SQL com o comando Select. O objetivo é dar uma visão geral do uso dele e as variações mais comuns.
Primeiro criei duas tabelas: Marcas e Carros, veja as figuras abaixo.
[Tabela Marcas]
[Tabela Carros]
Agora que conhecemos as duas tabelas, vamos aos exemplos.
Mostrar a marca, modelo, cor e valor de todos os carros com valores entre 20000 e 30000.
SELECT m.marca, c.modelo, c.cor, c.valorFROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca
AND c.valor between 20000 and 30000
[Resultado]
O between é usado quando você quer filtrar dados em um determinado período, podendo ser de data ou valores numéricos. Assim, podemos filtrar dados dentro de um mês específico ou outro período qualquer. O mesmo pode ser aplicado a valores numéricos como quantidade, valores monetários e outros.
No exemplo acima, foi filtrado os valores que estavam entre 20000 e 30000.
Mostrar a marca, origem, modelo e ano de fabricação de todos os carros com marcas americanas.
SELECT m.marca, m.origem, c.modelo, c.anoFROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca
AND m.origem = 'Americana'
[Resultado]
Perceba o uso do AND que é um operador lógico usado quando eu preciso combinar dois ou mais critérios para o filtro. No exemplo acima, eu tinha dois critérios, sendo m.codMarca = c.codMarca e m.origem = 'Americana'. Para que pudesse usar os dois foi necessário incluir o AND entre eles.
Mostrar a marca, origem, modelo e ano de fabricação de todos os carros de marcas europeias, ordenado por ano de fabricação.
SELECT m.marca, m.origem, c.modelo, c.anoFROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca
AND m.origem IN('Italiana','Alemã','Francesa')
ORDER BY c.ano
[Resultado]
A cláusula IN é muito importante para otimizar certas consultas no banco e lógico, tornar o código mais limpo e legível. Com ela podemos estabelecer uma lista de itens a serem considerados, como no exemplo acima e isto otimiza muito o código.
É importante considerar que além do IN, podemos usar também o NOT IN que tem a mesma finalidade, mas opera na negativa, ou seja, enquanto o IN inclui os itens da lista ou os considera, o NOT IN exclui os itens da lista ou os desconsidera.
Mostrar a marca, origem, modelo e valor de todos os carros inclusive as marcas sem nenhum carro.
SELECT m.marca, m.origem, c.modelo, c.anoFROM marcas as m LEFT JOIN carros as c
ON m.codMarca = c.codMarca
[Resultado]
O LEFT JOIN funciona como um sistema de junção e com ele é possível juntar dados de duas ou mais tabelas em uma mesma consulta. É um recurso bastante poderoso e amplamente usado.
No exemplo acima, pegamos dados da tabela marcas e juntamos com a tabela carros, porém, a preferência é pela tabela que está a esquerda, dai o LEFT. Isto nos mostrou que quando a tabela da esquerda, no nosso caso, marcas, não tiver dados correspondente no lado direito, no caso a tabela carros, as colunas correspondestes a segunda tabela retornaram nulo.
Mas além do LEFT, temos o INNER e RIGHT.
RIGHT funciona da mesma forma, mas de maneira oposta ao LEFT. Já o INNER JOIN força a correspondência em ambos os lados e exclui dos resultados os casos em que eles ocorrem de um lado apenas, como no exemplo acima.
Mostrar a marca e valor total (renomear a coluna valor para Total) de todos os carros e ordenar por marcas com maior valor agrupado.
SELECT m.marca, SUM(c.valor) as totalFROM marcas as m, carros as c
WHERE m.codMarca = c.codMarca
GROUP BY m.marca
ORDER BY total desc
[Resultado]
As funções de grupo são muito usadas para agregar resultados e com isso dar mais significado às consultas envolvendo valores numéricos.
Além do SUM, mostrado acima, há outras funções de grupo, como:
Mostrar todas as colunas de todos carros com cor azul e valor inferior a 35000
SELECT *FROM carros
WHERE cor='Azul' and valor < 35000
[Resultado]
Mostrar a marca e origem de todas Marcas onde a origem contenha o termo "ana"
SELECT marca, origemFROM marcas
WHERE origem like '%ana%'
[Resultado]
A cláusula LIKE é muito usado para fazer consultar por textos ou parte de um texto. Assim, podemos encontrar todos os registros onde o nome da pessoa contenha Maria, não importando o restante do nome da pessoa, desde que contenha Maria, por exemplo.
É importante considerar que além do LIKE, podemos usar também o NOT LIKE que tem a mesma finalidade, mas opera na negativa, ou seja, enquanto o LIKE é inclusivo, o NOT LIKE é exclusivo no sentido de excluir da consulta.
Estes são apenas alguns exemplos, mas ainda é possível criar diversas variações do comando select para produzir resultados diferentes com essas mesmas tabelas. Como disse no início, o SQL é muito rico. [Eu gosto. Gosto muito].
COMPARTILHE: Facebook Twitter WhatsApp