Covil Do Dev

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:

idnomesobrenomepais
1MariaAntôniaBrasil
2JoãoMiguelPortugal
3EduardoJorgeBrasil
4PauloSilvaPortugal
5JoanaLopesBrasil

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:

nomesobrenome
MariaAntônia
JoãoMiguel
EduardoJorge
PauloSilva
JoanaLopes

ad

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:

idnomesobrenomepais
1MariaSilvaBrasil
2JoãoMiguelPortugal
3EduardoJorgeBrasil
4PauloSilvaPortugal
5JoanaLopesBrasil

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:

idnomesobrenomepais
1MariaSilvaBrasil
3EduardoJorgeBrasil
5JoanaLopesBrasil

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:

nomesobrenome
MariaSilva
EduardoJorge
JoanaLopes

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:

idnomesobrenomepais
1MariaSilvaBrasil
3EduardoJorgeBrasil
5JoanaLopesBrasil

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:

idnomesobrenomepais
2JoãoMiguelPortugal
4PauloSilvaPortugal

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:

idnomesobrenomepais
4PauloSilvaPortugal
5JoanaLopesBrasil

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:

idnomesobrenomepais
1MariaSilvaBrasil
2JoãoMiguelPortugal
3EduardoJorgeBrasil

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:

idnomesobrenomepais
1MariaSilvaBrasil
3EduardoJorgeBrasil

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:

idnomesobrenomepais
1MariaSilvaBrasil
2JoãoMiguelPortugal
3EduardoJorgeBrasil
5JoanaLopesBrasil

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:

idnomesobrenomepais
2JoãoMiguelPortugal
4PauloSilvaPortugal

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:

idnomesobrenomepais
3EduardoJorgeBrasil

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.

Obrigado por visitar o blog e por ler esse artigo, se tive qualquer dúvida, ideia ou sugestão, não hesite em entrar em contato pelo meu e-mail: lindomar@covildodev.com.br