Guia Completo(Com Exemplos): SQL SELECT e SELECT WHERE
Em SQL, SELECT é uma instrução utilizada para selecionar (recuperar) dados de uma tabela de banco de dados. Neste tutorial, aprenderemos sobre a instrução SELECT com a ajuda de vários exemplos.
Dado a tabela abaixo:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Antônia | Brasil |
2 | João | Miguel | Portugal |
3 | Eduardo | Jorge | Brasil |
4 | Paulo | Silva | Portugal |
5 | Joana | Lopes | Brasil |
Em SQL
, a forma mais simples de recuperar(selecionar) dados dessa tabela seria:
SELECT nome, sobrenome
FROM clientes;
Esse comando ira retornar uma tabela com as colunas nome e sobrenome de todos os registros contidos na tabela clientes( caso você ainda não saiba oque é um registro em um banco de dados, veja esse artigo introdutório).
Essa seria a tabela retornada por esse comando:
nome | sobrenome |
---|---|
Maria | Antônia |
João | Miguel |
Eduardo | Jorge |
Paulo | Silva |
Joana | Lopes |
Selecionar todas as colunas
Para selecionar todas as colunas de uma tabela podemos utilizar o caractere *
onde anteriormente colocamos os nomes
das colunas, por exemplo:
SELECT *
FROM clientes;
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Silva | Brasil |
2 | João | Miguel | Portugal |
3 | Eduardo | Jorge | Brasil |
4 | Paulo | Silva | Portugal |
5 | Joana | Lopes | Brasil |
Filtrando colunas(WHERE)
Para selecionar apenas algumas colunas da tabela podemos utilizar a cláusula WHERE
juntamente com alguma condicional.
Por exemplo, podemos selecionar apenas os clientes do Brasil com o seguinte comando:
SELECT *
FROM clientes
WHERE pais = 'Brasil';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Silva | Brasil |
3 | Eduardo | Jorge | Brasil |
5 | Joana | Lopes | Brasil |
Ou podemos retornar apenas o nome e sobrenome desses clientes:
SELECT nome, sobrenome
FROM clientes
WHERE pais = 'Brasil';
Essa seria a tabela retornada por esse comando:
nome | sobrenome |
---|---|
Maria | Silva |
Eduardo | Jorge |
Joana | Lopes |
Nota: Em SQL, strings
(dados textuais) devem ser escritos em aspas simples ou duplas, como 'Brasil'
foi escrito
no exemplo, "Brasil"
também seria válido.
Operadores lógicos
A cláusula WHERE
utiliza operadores lógicos para construir condições.
Os operadores mais comuns e úteis são:
- Igual:
=
- Diferente:
!=
- Maior que:
>
- Menor que:
<
- Ou:
OR
- E:
AND
- Negação:
NOT
Abaixo veremos como se utiliza cada um desses operadores:
Igual (=)
Seleciona todos os valores onde o registro daquela coluna seja igual ao valor passado para comparação:
Exemplo de uso:
SELECT *
FROM clientes
WHERE pais = 'Brasil';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Silva | Brasil |
3 | Eduardo | Jorge | Brasil |
5 | Joana | Lopes | Brasil |
Apenas as linhas onde o cliente tenha como pais Brasil
foram retornadas.
Diferente (!=)
Seleciona todos os valores onde o registro daquela coluna difira do valor passado para comparação:
Exemplo de uso:
SELECT *
FROM clientes
WHERE pais != 'Brasil';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
2 | João | Miguel | Portugal |
4 | Paulo | Silva | Portugal |
Apenas as linhas onde o cliente não tenha como pais Brasil
foram retornadas.
Maior que (>)
Seleciona todos os valores onde o registro daquela coluna seja maior que valor passado para comparação:
Exemplo de uso:
SELECT *
FROM clientes
WHERE id > 3;
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
4 | Paulo | Silva | Portugal |
5 | Joana | Lopes | Brasil |
Apenas as linhas onde o id
do cliente é maior que 3
foram retornadas.
Menor que (<)
Seleciona todos os valores onde o registro daquela coluna seja menor que valor passado para comparação:
Exemplo de uso:
SELECT *
FROM clientes
WHERE id < 4;
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Silva | Brasil |
2 | João | Miguel | Portugal |
3 | Eduardo | Jorge | Brasil |
Apenas as linhas onde o id
do cliente é menor que 4
foram retornadas.
E (AND)
O operador AND
serve para “juntar” duas condições, exigindo que ambas sejam satisfeitas, por exemplo:
SELECT *
FROM clientes
WHERE id < 4 AND pais = 'Brasil';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Silva | Brasil |
3 | Eduardo | Jorge | Brasil |
Apenas as linhas onde o id
do cliente é menor que 4
e o pais é Brasil
foram retornadas.
Ou (OR)
O operador OR
também serve para “juntar” duas condições, porém exige apenas que uma dessas seja satisfeita, por
exemplo:
SELECT *
FROM clientes
WHERE id < 4 OR pais = 'Brasil';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
1 | Maria | Silva | Brasil |
2 | João | Miguel | Portugal |
3 | Eduardo | Jorge | Brasil |
5 | Joana | Lopes | Brasil |
As linhas onde o id
do cliente é menor que 4
ou o pais é Brasil
foram retornadas.
Negação (NOT)
O operador NOT
inverte o resultado da condição, isso é, caso seja verdadeiro(TRUE
) ele transforma em falso(FALSE
),
e vice-versa.
No exemplo abaixo é selecionado os registros que a condição seja falsa:
SELECT *
FROM clientes
WHERE NOT pais = 'Brasil';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
2 | João | Miguel | Portugal |
4 | Paulo | Silva | Portugal |
Apenas as linhas onde o cliente não tenha como pais Brasil
foram retornadas.
Combinando vários operadores
É possível combinar vários operadores em uma instrução SQL
.
Por exemplo, caso queira os clientes do Brasil com id
maior 2 e sobrenome que não seja Lopes
, poderíamos fazer da
seguinte forma:
SELECT *
FROM clientes
WHERE pais = 'Brasil' AND id > 2 AND NOT sobrenome = 'Lopes';
Essa seria a tabela retornada por esse comando:
id | nome | sobrenome | pais |
---|---|---|---|
3 | Eduardo | Jorge | Brasil |
Apenas uma linha foi retornada, pois era a única que tinha um id
maior que 2 e pais igual a Brasil
e o sobrenome não
fosse Lopes
.
Não selecionando dados duplicados(DISTINCT)
Digamos que queremos a lista de países onde temos clientes, já sabemos como retorna apenas essa coluna, porém teríamos um problema, observemos no exemplo:
SELECT pais
FROM clientes;
Essa seria a tabela retornada:
pais |
---|
Brasil |
Portugal |
Brasil |
Portugal |
Brasil |
Como temos poucos registros fica fácil ver que temos apenas Brasil
e Portugal
na lista, porém em um caso real
poderia facilmente chegar na casa dos milhões de registros.
Para resolver isso podemos utilizar a instrução DISTINCT
, que retorna apenas os registros distintos, ou seja, apenas a
primeira aparição de cada valor.
Podemos ver como ficaria no exemplo abaixo:
SELECT DISTINCT pais
FROM clientes;
Essa seria a tabela retornada:
pais |
---|
Brasil |
Portugal |
Agora apenas duas linhas foram retornadas, pois temos apenas dois valores únicos para essa query
.
Conclusão
Nesse artigo abordamos os usos mais simples da instrução SELECT
com os operadores lógicos mais comuns e úteis
em SQL
.
Esse artigo é a segunda parte de uma série de artigos que serão feitas sobre SQL, veja o artigo anterior e os próximos caso já tenha sido publicados mais partes.
- Introdução
- SELECT e operadores lógicos básicos
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)
- (EM BREVE)