Queries importantes que devemos aprender em SQL

Queries importantes que devemos aprender em SQL

Em uma entrada anterior vimos o que são bancos de dados e alguns comandos importantes para conhecer o mundo do SQL. Mas podemos fazer muito mais com os dados que temos: encontrar padrões que possamos analisar, filtrar, classificar, etc. Comecemos.

Revisaremos principalmente como limitar, filtrar e ordenar valores em bancos de dados, com os seguintes comandos:

  • LIMIT.
  • WHERE.
  • ORDER BY.

Para fazer isso, contaremos com SQL Practice e assim ter uma base de dados de exemplo que nos ajuda a integrar melhor as informações.

SQL Practice É bastante intuitivo à primeira vista: possui dois bancos de dados para praticar, hospital.db e northwind.db. A primeira contém uma lista de pacientes, dados gerais e algumas tabelas relacionadas, enquanto a segunda é uma lista de produtos e tabelas relacionadas às suas vendas. Neste artigo usaremos hospital.db, então vamos dar uma olhada.

No lado esquerdo, vemos informações do banco de dados e alguns recursos que são compartilhados conosco. No centro temos o espaço para escrever consultas e onde são exibidas as instruções. Abaixo está o resultado das consultas, enquanto do lado direito podemos ver quais questões resolver, alterar o nível de dificuldade e, eventualmente, cada questão junto com seu resultado esperado.


LIMIT

Usamos este comando para obter um número exato de linhas em uma consulta.

Para obter os primeiros 5 pacientes de hospital.db, inserimos o seguinte:

SELECT *

FROM patients

LIMIT 5;

O resultado ficaria assim:


WHERE

Este comando é usado para filtrar linhas com base em condições específicas. Está escrito depois de FROM e podemos especificar valores como números, texto, datas ou booleanos.

Filtrando valores numéricos

Aqui podemos fazer uso de operadores numéricos como = (igual a), > < (maior, menor) >= <= (maior ou igual a, menor ou igual a) e <> != (diferente de) .

Se quisermos mostrar pacientes com menos de 150 cm:

SELECT

first_name,

last_name,

height

FROM patients

WHERE height < 150;

Deveria ficar assim:

Pacientes cujo id é diferente de 2:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE patient_id <> 2;

Condições da cadeia com AND

Pacientes com mais de 150 cm de altura, peso inferior a 50 kg e nascidos após 2000:

SELECT

patient_id,

first_name,

last_name,

height,

weight,

birth_date

FROM patients

WHERE height > 150

AND weight < 50

AND birth_date > '2000-01-01';

Filtrando valores de tipo de texto

Os valores de texto que procuramos devem ser colocados entre aspas simples ou duplas.

Para saber os nomes e sobrenomes dos pacientes do sexo masculino, faremos esta consulta:

SELECT

first_name,

last_name,

gender

FROM patients

WHERE gender = 'M';


Filtramos pacientes chamados Charles:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name = 'Charles';

Operador LIKE

Da mesma forma, podemos filtrar pacientes cujo nome começa com C, utilizando o operador LIKE que nos permite procurar correspondências com um padrão específico em uma coluna.

Normalmente, ao lado de LIKE você pode usar o símbolo de porcentagem %, um curinga que indica que queremos retornar valores que possuam um ou mais caracteres após C:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name LIKE 'C%';

Pacientes cujo nome contém as letras 'ar':

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name LIKE '%ar%';

Existe outro curinga que especifica um único caractere: o sublinhado _.

Filtramos pacientes cujo nome começa com qualquer caractere, contém um R duplo e é seguido por um único caractere final.

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name LIKE '%rr_';

Filtrando valores de tipo de data

Lembremos que o formato da data no SQL é ano-mês-dia.

Pacientes nascidos em 03/05/1948:

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date = '1948-05-03';

Operador BETWEEN

Se quisermos saber os nomes dos pacientes que nasceram de 1995 a 2000, podemos utilizar os operadores BETWEEN e AND, com os quais incluímos os valores limites, neste caso, 1995-01-01 e 2000-01-01 .

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date

BETWEEN '1995-01-01' AND '2000-01-01';

Obtemos um total de 270 pacientes nascidos nestes anos.

Operador NOT

Retorna valores opostos à condição especificada.

Pacientes cujo nome NÃO começa com C:

SELECT

patient_id,

first_name,

last_name

FROM patients

WHERE first_name NOT LIKE 'C%';

Pacientes que não nasceram entre 1995 e 2000:

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date

NOT BETWEEN '1995-01-01' AND '2000-01-01';

ORDER BY

Podemos ordenar todas as consultas feitas anteriormente como acharmos adequado e otimizar nossa análise. ORDER BY organiza os resultados de acordo com a(s) coluna(s) que indicamos. Por padrão, isso é feito em ASC crescente e o operador DESC é adicionado para indicar uma ordem decrescente.

Pacientes mais antigos entre 1995 e 2000:

SELECT

patient_id,

first_name,

last_name,

birth_date

FROM patients

WHERE birth_date

BETWEEN '1995-01-01' AND '2000-01-01'

ORDER BY birth_date;

Classificamos por id:

SELECT

patient_id,

first_name,

last_name

FROM patients

ORDER BY patient_id ;

Classificamos os pacientes mais altos em ordem decrescente:

SELECT

patient_id,

first_name,

last_name,

height

FROM patients

WHERE height > 150

ORDER BY height DESC;

Conclusão

Com essas informações, estamos prontos para continuar praticando e aprimorando o uso do SQL. Espero que o SQL Practice ajude você com isso. Porém, existem muitos recursos aqui e na Internet que você pode aproveitar para fortalecer seus conhecimentos.

Até logo!

💡
As opiniões e comentários expressos neste artigo são de propriedade exclusiva de seu autor e não representam necessariamente o ponto de vista da Revelo.

A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.