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)

