Minicursos - MySQL

Select + Where


Agora vou falar sobre um complemento importantíssimo do comando SELECT, que é o WHERE, que nos permite consultas específicas. Este parâmetro permite que se especifique um dado para comparação com algo que pode estar no banco, ou seja, um dado de entrada para direcionar nossa busca.

Para que eu possa demonstrar as funcionalidades do parâmetro WHERE, farei a inserção de mais alguns dados fictícios em nossa tabela de clientes.

INSERT INTO cliente VALUES("1234-1234", "Ricardo", "Rua Episcopal, 3900 - Centro", "ricardo@emailinexistente.com", 32, "123321123-33");

INSERT INTO cliente VALUES("4567-4567", "Roberto", "Rua XV de Novembro, 25 - Centro", "roberto@emailinexistente.com", 42, "756398336-20");

INSERT INTO cliente VALUES("4444-3333", "Richard", "Rua Bahia, 215 - Pacaembu", "richard@emailinexistente.com", 18, "645332378-11");

Com esses dados já é possível demonstrar um pouco do que se pode fazer com o comando WHERE.

Para que fique claro, vamos começar com um SELECT exibindo os dados de nossa tabela, mas apenas nos campos nome, idade e email.

SELECT nome AS Nome, idade AS idade, email AS Email FROM cliente;

Comando Select com cláusula Where MySQL

A imagem acima mostra o retorno dos dados da nossa consulta. Vamos imaginar que quiséssemos exibir apenas os dados das pessoas que possuam idade maior do que 30 anos. Aqui o parâmetro WHERE entrará em ação, da seguinte forma:

SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente WHERE idade > 30;

Vejamos o retorno disso:

Comando Select com cláusula Where MySQL

Vejam que o SGBD retornou apenas as tuplas que continham idade maior do que 30 anos. Se quiséssemos incluir TAMBÉM as pessoas com idade igual a 30 anos, nosso código ficaria assim:

SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente WHERE idade >= 30;

Comando Select com cláusula Where MySQL

Vejam que eu incluí o sinal de igual e os dados retornados já incluem os clientes com idade igual a 30 anos.

Vamos nos aprofundar um pouco mais nas consultas imaginando uma situação em que se quisesse saber a idade e o email do cliente cujo nome é "Daniel". Agora nossa consulta ficaria dessa forma:

SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente WHERE nome like ‘Daniel’;

Vejamos esse retorno:

Comando Select com cláusula Where MySQL

Agora o SGBD retornou apenas o cliente cadastrado com o nome de "Daniel". Vale destacar que no exemplo da idade eu comparei esse campo utilizando o sinal de igual (=), mas para comparar a string eu utilizei o parâmetro like. Strings devem ser sempre comparadas utilizando o like e colocando-se o dado de entrada entre aspas simples.

Vamos aprofundar mais um pouco. Agora nós não sabemos o nome completo do cliente que queremos procurar, mas precisamos dos mesmos dados do exemplo acima para clientes cujo nome comece com a letra R. Agora nosso comando ficará assim:

SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente WHERE nome like 'R%';

Comando Select com cláusula Where MySQL

Vejam que eu utilizei o sinal de porcentagem, que em linguagem SQL é um caractere coringa, ou seja, ele representa qualquer coisa. A interpretação que o SGBD faz do comando utilizado no exemplo acima é:

Exiba o nome, a idade e o email da tabela cliente onde os nomes comecem com a letra R e sejam seguidos por quaisquer outros caracteres.

Por isso a nossa consulta só retornou nomes iniciados por R.

Poderíamos usar o coringa de forma invertida. Vamos imaginar que precisássemos resgatar os dados de um cliente cujo nome termine com a sequência de caracteres “berto”, mas não soubéssemos o começo. Nossa busca ficaria:

SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente WHERE nome like '%berto';

Comando Select com cláusula Where MySQL

O sistema procurou, dentre todos os nomes cadastrados na tabela "cliente", algum que possuísse a sequência "berto" cadastrada e fez o retorno.

Para encerrar a explicação sobre esse poderoso caractere coringa, vamos agora imaginar que temos um trecho qualquer do nome a ser procurado, mas sequer sabemos se ele se encontra no início, no meio ou no fim do nome. Esse trecho é "ard". Nosso comando ficará da seguinte forma:

SELECT nome AS Nome, idade AS Idade, email AS Email FROM cliente WHERE nome like '%ard%';

Comando Select com cláusula Where MySQL

Notem que o sistema exibiu todos os nomes que continham a sequência "ard", independente da sua localização na string. Isso foi possível graças a presença do caractere coringa antes e depois do trecho procurado.

Bem, no tópico seguinte falarei sobre como especificar ainda mais as consultas através de operadores lógicos.




Algumas notícias

Xiaomi vende 52,9 milhões de celulares no segundo trimestre de 2021 e faturamento dispara

A gigante chinesa Xiaomi registrou um aumento de quase 85% no seu faturamento no segundo trimestre de 2021 em comparação ao mesmo período do ano passado. A receita divulgada pela empresa foi de 13,5 bilhões de dólares (algo em torno de 70 bilhões de reais) nos meses de abril a junho deste ano...

Ler Notícia Completa

Galaxy S9 e Galaxy S9 Plus receberão atualização de segurança este mês

A Samsung começou a liberar esta semana, para proprietários dos modelos Galaxy S9 e Galaxy S9 Plus, uma nova atualização de segurança. Por enquanto somente alguns países da Europa receberam o pacote, que deve ser dis...

Ler Notícia Completa

Novas câmeras 'debaixo da tela' da Oppo surpreendem

Para muitos, colocar uma câmera embaixo da tela de um celular era uma tarefa impensável, por conta de diversos problemas técnicos. Os primeiros testes da Oppo que se propuseram a isso geravam imagens de qualidade bastante insatisfatória, já que a captação da luz era prejudicada pela tela. A prim...

Ler Notícia Completa

As memórias DDR5 estão chegando e trarão muitas melhorias

A próxima geração de memórias RAM já possui especificações definidas e promete grande melhoria em relação às atuais DDR4. E o mais importante: mesmo com desempenho bastante superior, elas consumirão menos energia. A tensão de trabalho das memórias DDR5 será de apenas 1.1V contra os 1.2V das atu...

Ler Notícia Completa

Google Chrome consumirá menos memória RAM em breve

O navegador da gigante de buscas da Internet é, sem dúvida, um dos melhores disponíveis, mas é inegável que o consumo de memória RAM por parte dele é exagerado. Este problema já se estende por anos, mas parece que em breve ele terá uma solução. Um novo recurso do Windows 10, chamado SegmentHeap...

Ler Notícia Completa

Sites e vídeos sem propagandas? Sim, é possível através da exploração de uma falha!

Seguramente você já se deparou com sites que bloqueiam o conteúdo da página e te obrigam a assinar determinado serviço para ler o conteúdo, certo? Ou foi tentar assistir aquele vídeo e as propagandas em tela cheia não pararam de surgir. Bem, todos já nos deparamos com isso, no entanto, um bug de...

Ler Notícia Completa

Inteligência Artificial cria antibiótico super potente

Pesquisadores do MIT (EUA) identificaram um novo e poderoso composto antibiótico usando um algoritmo de aprendizado de máquina, uma técnica de inteligência artificial. Em testes de laboratório, a droga matou algumas das bactérias causadoras de doenças mais problemáticas do mundo, incluindo algu...

Ler Notícia Completa
Ajude o Contém Bits com um cafezinho!

Se você gostou do artigo, se ele lhe foi útil de alguma maneira e você quiser ajudar o Contém Bits, saiba que é simples, fácil e rápido. Basta clicar na imagem do PayPal (ou no cafezinho) e seguir as instruções, em ambiente seguro e com o respaldo do Paypal. Eu agradeço muito! :)


Você gostará destes vídeos!